我需要从一个数组创建一个多维数组。
例如,假设初始数组= [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
有人有解决方案或建议吗?
使用1.upto(6)
进行6次迭代,然后通过与1.upto(6)
进行映射来制作单个数组。
1.upto(i)
这将使Enumerator的Enumerators。这些应该没问题,如果它们变大,您将节省内存。如果要强制它们为数组,请添加1.upto(6).map { |i| 1.upto(i) }
。
to_a
您可以使用1.upto(6).map { |i| 1.upto(i).to_a }.to_a
:
flatten
这个问题不太准确,所以以更一般的方式:
arr = []
arr = [1,2,3,4,5,6].map{ |elm| arr = [arr, elm].flatten }
arr # => [[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6]]
def multidemensional(ary)
ary.map { |x| 1.upto(x).to_a }
end
multidemensional([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]]
multidemensional([2, 2, 3, 7])
# => [[1, 2], [1, 2], [1, 2, 3], [1, 2, 3, 4, 5, 6, 7]]