Enumerable#inject
http://d.hatena.ne.jp/mssh/20080309#1205040537
合計を求める場合はEnumerable#injectを使うのが定番。
lambdaはブロックで。
def sum(s, e, &func) (s..e).inject{|sum, i| sum + func[i] } end def f(n) n % 7 end def g(n) 3 * f(sum(1, 7){|i| i**n }) end 100.times do |i| result = g(i) puts "g(#{i}) = #{result}" if result > 0 end # >> g(6) = 18 # >> g(12) = 18 # >> g(18) = 18 # >> g(24) = 18 # >> g(30) = 18 # >> g(36) = 18 # >> g(42) = 18 # >> g(48) = 18 # >> g(54) = 18 # >> g(60) = 18 # >> g(66) = 18 # >> g(72) = 18 # >> g(78) = 18 # >> g(84) = 18 # >> g(90) = 18 # >> g(96) = 18