Mil*_*les 3 ruby arrays count multidimensional-array
我似乎无法找到计算数组中数组数量的算法.例
特定
[ [ "Array", "1" ], [ "Array", "2" ] ]
Run Code Online (Sandbox Code Playgroud)
输出应该是两个
特定
[
[
[ ["Array", "1"], ["Array", "2"] ],
[ ["Array", "3"], ["Array", "4"] ],
],
[
[ ["Array", "5"], ["Array", "6"] ],
[ ["Array", "7"], ["Array", "8"] ]
]
]`
Run Code Online (Sandbox Code Playgroud)
输出应为8
这个递归函数将完成任何嵌套数组的工作:
def count_subarrays array
return 0 unless array && array.is_a?(Array)
nested = array.select { |e| e.is_a?(Array) }
if nested.empty?
1 # this is a leaf
else
nested.inject(0) { |sum, ary| sum + count_subarrays(ary) }
end
end
Run Code Online (Sandbox Code Playgroud)