Pascalの三角形 #1
二項係数の列、いわゆるPascalの三角形をgvprで計算する。
pascal1.g
BEGIN { if (ARGC != 1) { print("usage: gvpr -fpascal1.g -a <step>"); exit(0); } int step = ARGV[0]; int p[], q[]; int i, j; for (i = 0; i <= step; i++) { # calc i-th step for (j = 1; j < i; j++) { q[j] = p[j - 1] + p[j]; } q[i] = q[0] = 1; # print i-th step and prepare for next step for (j = 0; j < i; j++) { printf("%d ", q[j]); p[j] = q[j]; } print(q[i]); p[i] = q[i]; } }
ここでは単に係数の列を標準出力に出力する。
$ gvpr -fpascal1.g -a10 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1