使用算术确定两个索引是否在2D矩阵的同一行中

时间:2017-01-31 17:32:39

标签: math matrix modulo

是否可以使用矩阵索引确定两个值是否在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?

我必须忽视一个明显的解决方案,但我自己无法想出一个或在别处找到满意的解决方案。

1 个答案:

答案 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 // 419 // 42,因此这些位置位于不同的行中。