ライフゲーム

ライフゲームです。

ルールは下記のウィキペディアをご参照下さい。 ja.wikipedia.org

#!/usr/bin/awk -f

BEGIN{
    N = 22;     # 縦方向
    M = 78;     # 横方向

    a[N / 2][M / 2] = a[N / 2 - 1][M / 2] = a[N / 2 + 1][M / 2]\
     = a[N / 2][M / 2 - 1] = a[N / 2 - 1][m / 2 + 1] = 1;    # 初期状態

    for(g = 1; g <= 1000; g++){
        printf("Generation %4d\n",g);       # 世代
        for(i = 1 ;i <= N; i++){
            for(j = 1; j <= M; j++){
                if(a[i][j]){
                    printf("*");
                    b[i - 1][j - 1]++;b[i - 1][j]++;b[i - 1][j + 1]++;
                    b[i][j - 1]++;b[i][j + 1]++;
                    b[i + 1][j - 1]++;b[i + 1][j]++;b[i + 1][j + 1]++;
                }else{
                    printf(".");
                }
            }
            printf("\n");
        }
        for(i = 0; i <= N + 1; i++){
            for(j = 0; j <= M + 1; j++){
                if(b[i][j] != 2){
                    a[i][j] = (b[i][j] == 3);
                    b[i][j] = 0;
                }
            }
        }
    }
}

awkでもライフゲームを作ることが出来ました。