フラクタル図形の描画
フラクタル図形を描画する(基本情報 平成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];
}
}