フラクタル図形を描画する

フラクタル図形を描画する(基本情報 平成28年春期午後問9)

 解説を読んでも、今一歩イメージがわかないので、平成28年春期午後問9のリストを打ち込んでみました。
 問題のデータとはちょっと変えて、左上の1マスの * がないデータでも、きちんと表示されています。
 面白い。

平成28春午後問9
#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];
    }
}
タイトルとURLをコピーしました