擅长:python、mysql、java
<p>Willem Van Onsem给出的答案的一个更普通的版本,其中我显式地在索引和更容易处理的坐标之间转换。我还包括一个测试,检查是否一切都按预期进行:</p>
<pre><code>dimension = 4
def label_to_coords(label):
x = (label - 1) % dimension
y = (label - 1 - x) // dimension
return x, y
def coords_to_label(x, y):
return x + dimension * y + 1
def allAdjacentCell(given_index):
result = []
x, y = label_to_coords(given_index)
for delta_x in range(-1, 2):
for delta_y in range(-1, 2):
if not (delta_x == delta_y == 0):
new_x = x + delta_x
new_y = y + delta_y
if (0 <= new_x < dimension) and (0 <= new_y < dimension):
result.append(coords_to_label(new_x, new_y))
return result
def test():
size = dimension**2
for i in range(1, size + 1):
print(i, allAdjacentCell(i))
if __name__ == "__main__":
test()
</code></pre>