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,你是对的。我已经更新了我的答案。再次感谢您的宝贵反馈,非常感谢:-)