是否可以使用矩阵索引确定两个值是否在2D矩阵的同一行中,并且仅使用算术确定矩阵中每行的长度(行长度是否恒定)?
matrix = [
[4, 7, 9, 1],
[5, 1, 3, 3],
[8, 2, 4, 7],
[3, 6, 8, 2]
]
start = 4 # matrix index; points to matrix[1][0]
end = 9 # matrix index; points to matrix[2][1]
row_length = 4
# ... are start and end in the same row?
我必须忽视一个明显的解决方案,但我自己无法想出一个或在别处找到满意的解决方案。
答案 0 :(得分:0)
您可以通过将行除以行长度来找到给定的从零开始的索引的行号 - 结果整数部分是从零开始的行号。以下是检查同一行的Python代码:
if start // row_length == end // row_length:
# same row
else:
# different row
//
是整数除法。在没有该运算符的语言中:
if int(start / row_length) == int(end / row_length):
# same row
else:
# different row
在您的特定示例中,4 // 4
为1
,9 // 4
为2
,因此这些位置位于不同的行中。