首页 > 解决方案 > 如何从 Ruby 中的数组创建多维数组?

问题描述

我需要从一个数组创建一个多维数组。

例如,假设初始数组 = [1,2,3,4,5,6]

我需要一个多维数组

[ [1],[1,2],[1,2,3],[1,2,3,4],[1,2,3,4,5],[1,2,3,4, 5,6]]

我觉得这应该很容易,但我被卡住了。

这是我到目前为止所拥有的,这是错误的

def solution(a)
  empty =[]
  a.each do |x|
    new_array = Array(x)
    empty.push(new_array)   
  end
  empty.reverse
end

我试过了

def solution(a)
  empty =[]
  for i in 1..a.size
    new_array = Array(a.pop)
    empty.push(new_array)   
  end
  empty.reverse
end

有人有解决方案或建议吗?

编辑:我意识到我从未指定数组是否包含多个整数。出于我的目的,我正在寻找一种可以容纳整数或字符串的解决方案。

标签: arraysrubyalgorithmmultidimensional-array

解决方案


假设您要生成序列号列表,请使用1.upto(6)迭代 6 次,然后通过映射来制作单个数组1.upto(i)

1.upto(6).map { |i| 1.upto(i) }

这使得枚举器的枚举器。这些应该没问题,如果它们变大,您将节省内存。如果您想强制它们成为数组,请添加to_a.

1.upto(6).map { |i| 1.upto(i).to_a }

如果您想要更通用的解决方案,请使用Cary 的答案


推荐阅读