# -*- coding: utf-8 -*- # http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2034 # # 9! * 8 < 10 ** 7 # より,条件に一致する数の条件は 9! * 8未満である. # def fact(n) (n > 1) ? (1 .. n).reduce(:*) : 1 end facts = (0 .. 9).map{|i| fact(i) } puts (3 ... facts[9] * 8).reduce(0) {|sum, i| sum + ((i == i.to_s.chars.map{|j| facts[j.to_i]}.reduce(:+)) ? i : 0) }