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

Determine whether two indices are in same row of 2D matrix using arithmetic

是否可以仅使用算术来确定两个值是否在二维矩阵的同一行中,使用它们的矩阵索引和矩阵中每行的长度(行长度是常数)?

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?

我一定是忽略了一个明显的解决方案,但我无法自己想出一个解决方案或在其他地方找到一个令人满意的解决方案。

您可以找到给定 zero-based 索引的行号,方法是将其除以行长度 - 结果的整数部分是 zero-based 行号。这是检查同一行的 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,因此这些位置在不同的行中。