我是初學者,通過一些練習工作。我試圖操縱的2維陣列,使得如果一個元素是1,則周圍的非對角元素應改爲1:更改數組元素的周邊元素
[[0,0,0,0],
[0,0,1,0],
[0,0,0,0],
[0,0,0,0]]
應返回
[[0,0,1,0],
[0,1,1,1],
[0,0,1,0],
[0,0,0,0]]
我使用嵌套的each_with_index時遇到了問題:在我調整左右周圍的初始更改後,由於方法迭代,它會在早期調整時進行拾取並進行不必要的更改。此外,應改變「底」元素的行拋出一個錯誤:
a = [[0,0,0,0],
[0,0,1,0],
[0,0,0,0],
[0,0,0,0]
]
a.each_with_index do |m, n| # n == index of main array
m.each_with_index do |x, y| # y == index of subarray
if x == 1
a[n][y+1] = 1 unless (a[n][y+1]).nil? #right
a[n][y-1] = 1 unless (a[n][y-1]).nil? #left
a[n-1][y] = 1 unless (a[n-1][y]).nil? #top
a[n+1][y] = 1 unless (a[n+1][y]).nil? #bottom--currently giving an error
end
end
end
任何建議,我怎麼能去解決這兩個方面將備受矚目。
什麼有害的變化?詳細說明。什麼錯誤? – sawa