array.reduce(:lcm) 在Ruby 中是什么意思?
What does array.reduce(:lcm) mean in Ruby?
我目前正在研究 Project Euler 的第五个问题,它让您找到可以被 1 到 20 之间的每个数字均分的最小倍数。我的解决方案有效,但它花了相当长的时间,所以我正在寻找网上其他解决方案。我找到了这段代码:
these = []
1.upto(20) {|i| these << i} # Easier than writing it out
puts "Answer: #{these.reduce(:lcm)}"
这段代码非常简洁,而且可以立即运行,而我的代码需要两分钟多才能找到答案。我的问题是 :1cm 是什么意思?我知道你可以通过 :+ 和其他类似的选项来减少它们,它们会将数组的元素加在一起或相乘,但我以前从未见过“1cm”,我的 google fu 使我失望。
lcm
是 Integer
的一种方法 - 检查文档 here
Returns the least common multiple (always positive). 0.lcm(x) and x.lcm(0) return zero.
2.lcm(2) #=> 2
3.lcm(-7) #=> 21
((1<<31)-1).lcm((1<<61)-1) #=> 4951760154835678088235319297
您也可以将此方法直接应用于数组,它会给出所有元素的 lcm。
[1,2,3,4].reduce(:lcm) # => 12
[*1..20].reduce(:lcm) # => 232792560
我目前正在研究 Project Euler 的第五个问题,它让您找到可以被 1 到 20 之间的每个数字均分的最小倍数。我的解决方案有效,但它花了相当长的时间,所以我正在寻找网上其他解决方案。我找到了这段代码:
these = []
1.upto(20) {|i| these << i} # Easier than writing it out
puts "Answer: #{these.reduce(:lcm)}"
这段代码非常简洁,而且可以立即运行,而我的代码需要两分钟多才能找到答案。我的问题是 :1cm 是什么意思?我知道你可以通过 :+ 和其他类似的选项来减少它们,它们会将数组的元素加在一起或相乘,但我以前从未见过“1cm”,我的 google fu 使我失望。
lcm
是 Integer
的一种方法 - 检查文档 here
Returns the least common multiple (always positive). 0.lcm(x) and x.lcm(0) return zero.
2.lcm(2) #=> 2
3.lcm(-7) #=> 21
((1<<31)-1).lcm((1<<61)-1) #=> 4951760154835678088235319297
您也可以将此方法直接应用于数组,它会给出所有元素的 lcm。
[1,2,3,4].reduce(:lcm) # => 12
[*1..20].reduce(:lcm) # => 232792560