diff options
Diffstat (limited to 'examples/rule110/rule110.c')
-rw-r--r-- | examples/rule110/rule110.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/examples/rule110/rule110.c b/examples/rule110/rule110.c new file mode 100644 index 0000000..76f3b75 --- /dev/null +++ b/examples/rule110/rule110.c @@ -0,0 +1,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; +} |