Python 2, 125 bytes
s="%64c"%10
exec's*=63;s="".join(s[n][(s[n+3967:][:191]*3)[::64].strip()=="X":n!=2015]or"X"for n in range(4032));'*32
print s
This answer is by clockuser "clock" based on hallvabo's solution, on the Anarchy Golf version of this challenge that I submitted. Note that output there is strict and is required to be exactly the picture of X's and spaces to STDOUT via a full program, with only an allowance for a trailing newline.
The most interesting part of this answer, in my opinion, is the concise construction (s[n+3967:][:191]*3)[::64]
after s*=63
to get the nine neighbors of the cell counting itself in a flat newline-joined string representing the grid. To check if there's exactly one X
among them, .strip()
is called to get rid of whitespace on either side, and the result is checked to equal just "X"
.
It's interesting how simulating the steps on the string representation of the output directly (rather than an array of bits) not only saves on doing a conversion to characters later but also allows string-specific methods to be used in a golfy way.
Another neat trick, borrowed from hallvabo, is "%64c"%10
used to initialize s
to 63 spaces followed by a newline for a line of the initial empty grid. Using the %c
format, which converts an ASCII value to a character, is shorter than " "*63+"\n"
or "%64s"%"\n"
.