Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Let's have some fun with Rule 110:
- # https://en.wikipedia.org/wiki/Rule_110
- import turtle
- import random
- # enumerate next state for Rule 110
- ca_rule = [0, 1, 1, 1, 0, 1, 1, 0]
- # Note we can use the same encoding trick for all 1D CAs.
- # For example, for Rule 54 we can have:
- # ca_rule = [0, 1, 1, 0, 1, 1, 0, 0]
- def next_state(state):
- n = []
- j = len(state)
- for i in range(j):
- # Let's assume that the two edges of the list are connected
- left = i - 1
- right = i + 1 if i < j - 1 else 0
- n.append(ca_rule[4 * state[left] + 2 * state[i] + state[right]])
- return n
- game_len = 120
- x_pos = -100
- y_pos = 200
- window = turtle.Screen()
- window.bgcolor('light gray')
- pen = turtle.Turtle()
- pen.speed(20)
- pen.color('dark blue')
- pen.pensize(2)
- pen.shape('classic')
- # create a random starting state
- curr_state = [ random.choice([1, 0]) for x in range(game_len) ]
- for g in range(game_len):
- pen.penup()
- pen.setx(x_pos)
- pen.sety(y_pos)
- for c in curr_state:
- if c == 1:
- pen.pendown()
- else:
- pen.penup()
- pen.forward(3)
- curr_state = next_state(curr_state)
- y_pos -= 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement