我们可以通过简单的方法在零二维红宝石阵列周围填充零点吗?
1 1 4
1 6 9
2 6 5
到这个
0 0 0 0 0
0 1 1 4 0
0 1 6 9 0
0 2 6 5 0
0 0 0 0 0
答案 0 :(得分:1)
以下Ruby onliner应该可以解决这个问题。
array = [[1, 1, 4],
[1, 6, 9],
[2, 6, 5]]
result = [Array.new(array.size + 2, 0)] + array.map{|subarr| [0] + subarr + [0]} + [Array.new(array.size + 2, 0)]
希望这有帮助。
答案 1 :(得分:0)
arr = [[1, 1, 4],
[1, 6, 9],
[2, 6, 5]]
以下内容无需检查边界情况。
Array.new(arr.size+2) { |i| Array.new(arr.first.size+2, 0) }.tap { |a|
arr.size.times { |i| arr.first.size.times { |j| a[i+1][j+1] = arr[i][j] } } }
#=> [[0, 0, 0, 0, 0],
# [0, 1, 1, 4, 0],
# [0, 1, 6, 9, 0],
# [0, 2, 6, 5, 0],
# [0, 0, 0, 0, 0]]
请参阅类方法Array::new和实例方法Object#tap的文档。