フラクタル図形を描画する
フラクタル図形を描画する(基本情報 平成28年春期午後問9)
解説を読んでも、今一歩イメージがわかないので、平成28年春期午後問9のリストを打ち込んでみました。
問題のデータとはちょっと変えて、左上の1マスの * がないデータでも、きちんと表示されています。
面白い。
#include <stdio.h> int pat[2][3] = { { 0,1,1 }, { 1,0,1 } }; int p_rn = sizeof pat / sizeof pat[0]; int p_cn = sizeof pat[0] / sizeof pat[0][0]; void print_frac(int); int exists_at(int, int, int); int main() { int depth = 4; printf("始まりだよ 階層は = %d '\n ", depth); printf("sizeof pat = %d sizeof pat[0] = %d '\n ", sizeof pat, sizeof pat[0]); printf("p_rn = %d p_cn = %d '\n ", p_rn, p_cn); print_frac(depth); return 0; } void print_frac(int d) { int i, j, rn, cn; rn = cn = 1; for (i = 0; i < d; i++) { rn *= p_rn; cn *= p_cn; } putchar('\n'); for (i = 0; i < rn; i++) { for (j = 0; j < cn; j++) { putchar(exists_at(i, j, d) ? '*' : ' '); } putchar('\n'); } } int exists_at(int i, int j, int d) { if (d == 0) { return 1; } else if (exists_at(i / p_rn, j / p_cn, d - 1) == 0) { return 0; } else { return pat[i % p_rn][j % p_cn]; } }