awkで多角数
さて、いよいよ年末に近づきつつありますが、皆様いかがお過ごしでしょうか?
私も仕事やプライベートやらで忙しい日々を送ております。
ブログ更新も大変ですが、頑張って更新作業は続けていきたいと思います。
今回は多角数という問題で、いつもように広井さんのサイトからです。
では早速問題です。
n 番目の m 角数を求めるプログラムを作ってください。
pythonで書かれてあったものをそのままawkに直しただけです。
#!/usr/bin/awk -f BEGIN{ for(i = 3; i < 9; i++){ printf i " : "; for(j = 1; j < 17;j++){ printf polygonal_number(i,j) " "; } print; } } function polygonal_number(p,n){ return ((p - 2) * n * n - (p - 4) * n) / 2; }
実行してみます。
$ awk -f polygonal_number.awk 3 : 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 4 : 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 5 : 1 5 12 22 35 51 70 92 117 145 176 210 247 287 330 376 6 : 1 6 15 28 45 66 91 120 153 190 231 276 325 378 435 496 7 : 1 7 18 34 55 81 112 148 189 235 286 342 403 469 540 616 8 : 1 8 21 40 65 96 133 176 225 280 341 408 481 560 645 736
polygonal_number関数の式の意味はまだよく分かっていないで、しっかり勉強したいと思う。