import random
SIZE = 3 # BoardSize
RNG_SIZE = SIZE + 1 # use "for loop"
ALIVE = 1
DEAD = 0
# LifeGame Judge
def lifegame(list):
tmp = initList()
for i in range(1, RNG_SIZE):
for j in range(1, RNG_SIZE):
cnt = count(list, i, j)
if(list[i][j] == 1):
if(cnt != 2 and cnt != 3):
tmp[i][j] = DEAD # dead
else:
tmp[i][j] = ALIVE # alive
else:
if(cnt == 3):
tmp[i][j] = ALIVE # born
else:
tmp[i][j] = DEAD # death
flg = True
if(isDead(tmp)):
flg = False
if(isNotEvol(tmp, list)):
flg = False
return tmp, flg
# Alive Count on around
def count(list, row, col):
ret = 0
for i in range(-1, 2):
for j in range(-1, 2):
if(i == 0 and j == 0):
continue
if(list[row + i][col + j] == ALIVE):
ret += 1
return ret
# Is All Dead
def isDead(tmp):
for i in range(1, RNG_SIZE):
for j in range(1, RNG_SIZE):
if(tmp[i][j] == ALIVE):
return False
return True
# Is Evolving
def isNotEvol(tmp, list):
for i in range(1, RNG_SIZE):
for j in range(1, RNG_SIZE):
if(tmp[i][j] != list[i][j]):
return False
return True
# Display
def printList(list):
for i in range(1, RNG_SIZE):
s = ""
for j in range(1, RNG_SIZE):
s += str(list[i][j]) + " "
print s
print ""
# Initialize List
def initList():
ret =
for i in range(0, RNG_SIZE + 1):
tmp =
for j in range(0, RNG_SIZE + 1):
tmp.append(0)
ret.append(tmp)
return ret
# main
def main():
list = initList()
for i in range(1, RNG_SIZE):
for j in range(1, RNG_SIZE):
list[i][j] = random.choice([1, 0])
printList(list)
flg = True
while(flg):
list, flg = lifegame(list)
printList(list)
if __name__ == "__main__":
main()