我正在编写一个小型 Ruby 算法,该算法仅在以“1”结尾的值上引发上述错误,例如“21”、“31”、“41”。
success = []
(1..9_999_999).each do |num|
num_s = num.to_s.split("")
if num_s.inject(0){ |memo, val| memo += (1..val.to_i).inject(&:*) } == num
success << []
end
end
奇怪的是,主代码行本身没有错误:
["2", "1"].inject(0){ |memo, val| memo += (1..val.to_i).inject(&:*) } #-> 3
基于错误,我认为这样做可能有问题:
(1.."1".to_i).inject(&:*) #-> 1
但是没有......我很困惑。