0
我試圖計算從某個位置滿足特定位置的鄰接單元格的數量,該矩陣滿足特定條件(包含字符串的列表) - 每個單元格有八個相鄰單元格 - 。到目前爲止我已經做到了這一點,但它似乎並沒有成功地工作(不通過斷言數4):矩陣中的相鄰單元格(字符串列表)
def calculate_adjacents(matrix,row,column):
'''Calculates the number of cells adjacent to the cell in (row,column)'''
adjacents = 0
for i in range(row-1,row+2):
for j in range(column-1,column+2):
if i == len(matrix) or j == len(matrix[i]):
break
if matrix[i][j] == "#":
adjacents += 1
return adjacents
此外,必須驗證這一點:
def test_calculate_adjacents():
assert calculate_adjacents((['.']), 0, 0) == 0
assert calculate_adjacents((['..', '..']), 0, 0) == 0
assert calculate_adjacents((['..', '..']), 0, 1) == 0
assert calculate_adjacents((['##', '..']), 0, 0) == 2
assert calculate_adjacents((['##', '..']), 0, 1) == 2
assert calculate_adjacents((['#.', '.#']), 0, 0) == 4
assert calculate_adjacents((['##', '##']), 0, 0) == 8
assert calculate_adjacents((['.#.', '#.#', '.#.']), 1, 1) == 4
assert calculate_adjacents((['.#.', '..#', '.#.']), 1, 1) == 3
好像這是關係到康威生命遊戲。如果「環繞」意味着我認爲它的意思,那麼你需要在像'row - 1'等表達式中使用模塊化算術。除非你編碼它,否則它不會環繞。另外 - 爲什麼'row + 2'而不是'row + 1'?似乎不一致。 –
歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。 *如何*這不起作用?這些測試會返回什麼樣的價值,您覺得它有什麼問題? – Prune
是的,它與康威的生命遊戲有關。我會嘗試使用模塊化算術表達式。它沒有通過四個斷言 – Facu