在Ruby中优化嵌套循环

谢尔盖·布洛因(Sergey Blohin)

在Ruby中,我有三个嵌套循环:

array.each do |a|
  array.each do |b|
    array.each do |c|
      puts a * b * c
    end
  end
end

如果嵌套循环的数量可以增加到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
斯派克曼

您可以执行以下操作:

array.repeated_combination(array.size).each do |combination| 
  puts combination.reduce(:*)
end

Array#repeated_combination 返回产生所有可能组合的枚举器。

由于此方法会在打印之前生成所有组合,因此根据阵列的大小,可能需要花费一些时间。请记住,可能的组合数量增加相当快:O(nⁿ)n是数组中元素的个数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章