Arrays 二维数组中的乘法
我试图得到数组排列的乘积:Arrays 二维数组中的乘法,arrays,ruby,Arrays,Ruby,我试图得到数组排列的乘积: orig_arr = (89..99).to_a perm = [[89, 90], [89, 91], [89, 92], [89, 93]...] need = [[8010], [8099], [8188]...] 我最好的猜测是枚举,但是reduce在中不起作用: perm.each{|set| set.reduce(:*)} orig_arr = (89..99).to_a orig_arr.permutation(2).map { |set| [s
orig_arr = (89..99).to_a
perm = [[89, 90], [89, 91], [89, 92], [89, 93]...]
need = [[8010], [8099], [8188]...]
我最好的猜测是枚举,但是reduce
在中不起作用:
perm.each{|set| set.reduce(:*)}
orig_arr = (89..99).to_a
orig_arr.permutation(2).map { |set| [set.reduce(:*)] }
# => [[8010], [8099], [8188], [8277], [8366], [8455], . . . ]]
为什么这样不行?另外,最好不要创建2D数组,而是使用散列或矩阵来解决此问题?您可以使用而不是每个使其工作:
perm.each{|set| set.reduce(:*)}
orig_arr = (89..99).to_a
orig_arr.permutation(2).map { |set| [set.reduce(:*)] }
# => [[8010], [8099], [8188], [8277], [8366], [8455], . . . ]]
@K M Rakibul Islam谢谢你,这就是诀窍。我将在地图上学习。太棒了!谢谢你的第二次申请#地图显然是我需要非常熟悉的东西。再次感谢!是的,它非常有用而且功能强大。非常欢迎:)没有必要使用.to\u a
。这是因为orig#u arr.permutation(2)#=>#
是类的一个实例,它包括模块(map
驻留的地方)并实现方法每个
。另外,它更像是链接,而不是定义临时变量perm
:orig|u arr.permutation(2).map{set | reduce(:*)]}
@CarySwoveland,你是对的。我已经更新了我的答案。再次感谢您的宝贵反馈,非常感谢:-)