Ser*_*hin 4 ruby optimization nested-loops
在Ruby中我有三个嵌套循环:
array.each do |a|
array.each do |b|
array.each do |c|
puts a * b * c
end
end
end
Run Code Online (Sandbox Code Playgroud)
如果嵌套循环的数量可以增加到5-10次并且更多迭代,我该如何优化此代码?
例:
array.each do |a|
array.each do |b|
array.each do |c|
array.each do |d|
array.each do |e|
array.each do |f|
puts a * b * c * d * e * f
end
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
array.repeated_combination(array.size).each do |combination|
puts combination.reduce(:*)
end
Run Code Online (Sandbox Code Playgroud)
Array#repeated_combination 返回一个枚举器,它产生所有可能的组合.
因为此方法在打印之前生成所有组合,所以输出可能需要一段时间,具体取决于数组的大小.请记住,可能的组合数量增加相当快:O(n?)有n是数组中元素的个数.
| 归档时间: |
|
| 查看次数: |
820 次 |
| 最近记录: |