如何扩展两个dimentioanl阵列

时间:2018-02-14 06:12:49

标签: arrays ruby multidimensional-array

我们可以通过简单的方法在零二维红宝石阵列周围填充零点吗?

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 

2 个答案:

答案 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的文档。