使用二維數組處理康威的生命遊戲版本,當嘗試計算每個單元格的「鄰居」總數時,我一直被零值阻塞。如何將數組中的nil轉換爲0來獲得總和?
def neighbor_count
grid.each_with_index do |row, idx|
row.each_with_index do |column, idx2|
[grid[idx - 1][idx2 - 1], grid[idx - 1][idx2], grid[idx - 1][idx2 + 1],
grid[idx][idx2 - 1], grid[idx][idx2], grid[idx][idx2 + 1],
grid[idx + 1][idx2 - 1], grid[idx + 1][idx2], grid[idx + 1][idx2 + 1]
].compact.sum
end
end
end
.compact似乎產生最的結果,如果包括在陣列前面的「看跌期權」,但沒有的我已經試過的選項給我100%。我試過減少(:+),注入,.to_i,拒絕(擺脫零值),等等。
這裏缺少什麼?
錯誤:world.rb:35:在block (2 levels) in neighbor_count': undefined method
[]」爲零:NilClass(NoMethodError)
第35行是上述] .compact.sum線
謝謝。我明白了,因爲它會產生零值。有關如何有效排除任何超出邊界的座標的建議? –
@JeremyFlanagan:是的,有些人會做得很好。 –
@JeremyFlanagan:這是我在_years_之前編碼的生活遊戲。所以沒有判斷的代碼https://gist.github.com/stulentsev/0e25ae7b079466412a87de26fc4f11be :) –