#include #include int main(void) { uint8_t rule; int c, gen, len = 0; uint8_t *tmp; uint8_t *cur = malloc(512 * sizeof(uint8_t)); uint8_t *new = malloc(512 * sizeof(uint8_t)); scanf("%d %d\n", &rule, &gen); while ((c = getchar()) != '\n') { cur[len] = ((c == 'X') ? 1 : 0); len++; } for (int i = 0; i < gen; i++) { for (int j = 0; j < len; j++) { int shift = 0; if (j) { cur[j - 1] ? shift |= 0b100 : NULL; } cur[j - 0] ? shift |= 0b010 : NULL; if (j != len - 1) { cur[j + 1] ? shift |= 0b001 : NULL; } new[j] = (rule >> shift) & 1; new[j] ? putchar('X') : putchar('.'); } putchar('\n'); tmp = cur; cur = new; new = tmp; } return 0; }