Problem 2
フィボナッチ数列の項は前の2つの項の和である。最初の2項を 1, 2 とすれば、最初の10項は以下の通りである。
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項の値が400万を超えない範囲で、偶数値の項の総和を求めよ。
Solution
sum = (list) -> list.reduce (a, b) -> a + b odd ?= (num) -> num % 2 == 0 fib_tr = (n, b, a) -> if n == 0 then a else fib_tr(n - 1, b + a, b) fib = (n) -> fib_tr(n, 1, 0) max = 4000 * 1000 list = (fib n for n in [1..40] when (fib n) < max) console.log sum list.filter (x) -> odd? x
fib 40 > 4000000と仮定してるあたりが美しくないんだががが
順路:CoffeeScriptでProject Euler #3
逆路:CoffeeScriptでProject Euler #1(カリー化の利用と解説試案)