Project Eulerをワンライナーで解いてみる。
間違っていたらコメントください。
問題
2×2 のマス目の左上からスタートした場合, 引き返しなしで右下にいくルートは 6 つある.
では, 20×20 のマス目ではいくつのルートがあるか.
解答
前提:要するに、
\frac{(20+20)!}{20!20!}
を計算すればよい。すなわち、
\frac{21*22*...*39*40}{1*2*...*19*20}
を計算すればよい。
※筆算で解く場合にはもっと華麗な方法がある。
bash
やawk
に階乗を計算するものがないようだったので仕方なくawk
でループする。
print
だと指数表示になってしまうのでprintf
を使用する。
awk 'BEGIN{a=1;for(i=21;i<=40;i++){a*=i};print a}' |
awk '{v=$1;for(i=1;i<=20;i++){v/=i};printf("%d\n",v)}'
137846528820
思っていたより大きな値だった。
答え合わせ
こちらのサイト様と一致していればOKとした。
http://kingyojima.net/pje/015.html