summaryrefslogtreecommitdiff
path: root/examples/rule110/rule110.c
blob: 76f3b754c1c1323618a5e8d58c1616f11073348d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>

#define BOARD_CAP 100
static int board[BOARD_CAP];

int main()
{
    board[BOARD_CAP - 2] = 1;

    for (size_t i = 0; i < BOARD_CAP - 2; ++i) {
        for (size_t j = 0; j < BOARD_CAP; ++j) {
            fputc(" *"[board[j]], stdout);
        }
        fputc('\n', stdout);

        int pattern = (board[0] << 1) | board[1];
        for (size_t j = 1; j < BOARD_CAP - 1; ++j) {
            pattern = ((pattern << 1) & 7) | board[j + 1];
            board[j] = (110 >> pattern) & 1;
        }
    }
    return 0;
}