Project Eulerをワンライナーで解いてみる。
間違っていたらコメントください。
問題
フィボナッチ数列の項は前の2つの項の和である. 最初の2項を 1, 2 とすれば, 最初の10項は以下の通りである.
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
数列の項の値が400万以下の, 偶数値の項の総和を求めよ.
Note:この問題は最近更新されました. お使いのパラメータが正しいかどうか確認してください.
解答
ワンライナーとは言わないか。。
a=0;b=1;for i in $(seq 50); do s=$(($a+$b)); echo $s;a=$b;b=$s;done |
awk '$1<=4000000 && $1%2==0{a+=$1}END{print a}'
4613732
フィボナッチ数列の出し方についてこういったものもあったけど、awk
でforやwhileは個人的には使いたくないなぁ。
→awk
でforは覚えておくとよい!
awk 'BEGIN{n=1;fn2=fn=1;while(n<50) {n++;fn=fn1+fn2;print fn;fn1=fn2;fn2=fn;}}'
答え合わせ
こちらのサイト様と一致していればOKとしました。
http://kingyojima.net/pje/002.html