Skip to content

Instantly share code, notes, and snippets.

@sciguy16
Created March 20, 2018 00:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sciguy16/48cd0ad8d41e152b0954651ea90af2fb to your computer and use it in GitHub Desktop.
Save sciguy16/48cd0ad8d41e152b0954651ea90af2fb to your computer and use it in GitHub Desktop.
Python script to solve the Critters challenge from InterACE 2018. It takes in a state and writes an X-PixMap image file for each step of the evolution. Written in under ten minutes right at the end of the competition.
#!/usr/bin/python3
# solve-critters.py
grid = ["bbbbbbbbbbbbbbbbbbbboobboobboobboobboobboobbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbobbbbbbbbbbbbbbbbbbbbbbbbbbobbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbobbbbbbbbbbbbbbbbbbbbbbbbbbobbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbboboboobbbbbbbbbbobbobbbbbbbbbboobobobbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbboobbbbbbbbbbbbbbbbbbbbbbbbbboobbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbobbobbbbbbbbobbbbbbobbbbbbbbobbobbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbobbbobbbbbbbbbbboobboobbbbbbbbbbbobbbobbbbbbbbbbbbbb",
"bbbbbbbbbbbobbbboobbobobbbbobbbbbbobbobooboboobbbbobbbbbbbbbbbbb",
"bbbbbbbbbbbbbobbbbbbobbbobbbbbbbbboobbbbbobobbbbobbbbbbbbbbbbbbb",
"bbbbbbbbbobobbboobobbbboooboboooobbbobobbbobboobbbobobbbbbbbbbbb",
"bbbbbbbbobbbboobobbbbbbobbbobbbbboobbbobbbbbboboobbbbobbbbbbbbbb",
"bbbbbobbbbobobbbbbooboobboooobbbooobbobooboobbbbbobobbbbobbbbbbb",
"bbbbbbbbbbbbobobbboboobboobbbbbooobbbboobobbbbbobobbbbbbbbbbbbbb",
"bbbbbobobbbobbbbbbobboobbboboobobobobooboobbbbbbbbobbbobobbbbbbb",
"bbbbbbobooboobbbbobbooooboooobbbboooooooooooobbbbooboobobbbbbbbb",
"bobbooobbobbbbboooobobbbbobbboboobbbbbbbbbboooobbbbbobbooobbobbb",
"bbbbbobobbbobobbbbbbobooobboobbobbobbbobbobooobbooobbbobobbbbbbb",
"bbbbbbbbbbbbboobbbbbbooboobbboobbbbbbobboobobbbbobbbbbbbbbbbbbbb",
"obbbbbbbbooboobobobbbboboobbbbbbooboboobbobbboooooboobbbbbbbbobb",
"obbbbbbbbbbbbbobbbbbobobobbbbbbbbobboobbbbboboobbobbbbbbbbbbbobb",
"bbbbbbbbbobobbbooboobooboobboboooobbooobbboooobobbobobbbbbbbbbbb",
"bbbbbbbbbbbbbobobboobobbboobooooboobobbbbbobboboobbbbbbbbbbbbbbb",
"bobboobbbbbbooboobbbobobbobobooooobbooooboobbobbbbobbbbbbbbbbobb",
"bbbbbbbbobbobooobbobbbbobboboooobooobobobbbbbbobbobbbbbbbbbbbobb",
"bbbbbbbbboobboooobbbbobbbobooooooooobobobbobbboobobbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbooobbboooboobbobobbbooooboooobbbboobobbbbbbbbbbbbb",
"bbbbbbbbboobbobbbobooobbboboooboobbbooobbobooboooobooobboobbobbb",
"bbbbbbbbbboobooooobbbbbobbbobbbobbobbbooobbbobbbbbbobbbbbbbbbbbb",
"bbbbbbbboboboobbboboobooobooobboobooobooooobbooobbbbbbbbbbbbbbbb",
"bbbbbbbbbboobobobbbbbbooooboboooboooobbboobbbobbobobbbbbbbbbbbbb",
"bbbbbbbbbbbboboobboobooboobbobooooobbbooobobobobbbobbbbbbbbbbbbb",
"bbbbbbbbbbbbooobobbobobbboobobobobbooobbobbbobooobbbbbbbbbbbbbbb",
"bbbbbbbbboboobbobobbbobbobbobboobobooobooboboboboboobbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbboobbbboboboobbbbbobbobbbbbobbbbobbboobobbbbbbb",
"bbbbbbbbbbbboobobooobobbboobooobbooobobooobbbboobbobbobbbbbbbbbb",
"bbbbbbbbbbbooobbbbbooboooobbboooboboboobbboobobbbbbbbobbbbbbbbbb",
"bbbbbbbbbbbbbbobbbbbbboobobboboboobboboobbbboobobbbbbbobobbbbbbb",
"bbbbbbbbbobobbooobobobobobbboobooooobooooboobobooobooobbbbbbbbbb",
"bbbbbbbbobbbboobobbobbbbbboboobbboooboooboobbbbobbobobbbbbbbbbbb",
"bbbbbobbbbobobbbbbbbooobobobbbbbobbobbooooobbboooobboobbbbbbbbbb",
"bbbbbbbbbbbbobbbbobbobboobboooobobobboooobbbobobbboobbbbbbbbbbbb",
"bbbbbobobbbobboobbbbobbooooobbobbbobbbbbooooooobbbobbbbbbbbbbbbb",
"bbbbooobboobbobboobobbbboobobobooobobbbbobobooobboobbbbbbbbbbbbb",
"bbbbooobboobbobboobbobboobobbbooobbbbooobbooboooooboobbbbbbbbbbb",
"bbbbbobobbbobbbbbbobbboobboobbbbbbooboobbbobbooobooboobbbbbbbbbb",
"bbbbbbbbbbbbobobbbobboooboooboboooobbboooobbooobobbboobbbbbbbbbb",
"bbbbbobbbbobobbbbbooobbbbbbbobobbbbbbbboboobbobbbbbobbbbbbbbbbbb",
"bbbbbbbbobbbboobobbbbbobbbbboobbbbooobbooobobooooboobbbbbbbbbbbb",
"bbbbbbbbbobobbboobbbbbbbobbbboboobbbbbbbbbobobbbbobbbbbbbbbbbbbb",
"bbbbbbbbbbbbbobbbbooobbbobobobbbbobobobobbobbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbobbbboobbbbobbbbobbbbbbbbbbbbbbbobbbobbobbbbbbbbbbbbb",
"bbbbbbbbbbbbobbbobbboobboobbbbobbbbbbooobbbbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbobbobbbbbbbbbbbbbbbbbobobbbobbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbboobbbbbbbbbbbboobbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbboboboobbbbbbbbbobboboobbbbbobbbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbobbbbbbbobbbbbbbbbboobbbbbbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbobbbbbbobbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbbbboobbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"]
for i in range(64):
grid[i] = list( grid[i] )
def evolve(i, j):
# the square goes clockwise around
square = [grid[i][j], grid[i][j+1], grid[i+1][j+1], grid[i+1][j] ]
if square.count('o') == 0:
square = ['o', 'o', 'o', 'o']
elif square.count('o') == 1:
square = list( map( lambda x: 'b' if x=='o' else 'o', square ) )
elif square.count('o') == 2:
pass
elif square.count('o') == 3:
square = [ square[2], square[3], square[0], square[1] ]
square = list( map( lambda x: 'b' if x=='o' else 'o', square ) )
elif square.count('o') == 4:
square = ['b', 'b', 'b', 'b']
grid[i][j] = square[0]
grid[i][j+1] = square[1]
grid[i+1][j+1] = square[2]
grid[i+1][j] = square[3]
def evenpass():
for i in range(0, 64, 2):
for j in range(0, 64, 2):
evolve(i, j)
def oddpass():
for i in range(1, 63, 2):
for j in range(1, 63, 2):
evolve(i, j)
def writeimage(name):
f = open(str(name)+".xpm",'w')
im = ''
for row in grid:
im += '"' + ''.join(row) + '",'
f.write('''/* XPM */
static char * index_xpm[] = {
"64 64 2 1",
"b c #FFFFFF",
"o c #000000",''' + im + '};')
f.close()
for i in range(5):
evenpass()
writeimage(2*i)
oddpass()
writeimage(2*i+1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment