Files
zern/examples/rule110.zr
2026-05-13 14:01:44 +02:00

39 lines
937 B
Plaintext

func rule110_step[state: Array] : Array
let new_state = []
for i in 0..state->size
let left = false
if i - 1 >= 0
left = array.nth(state, i - 1)
let center: bool = array.nth(state, i)
let right = false
if i + 1 < state->size
right = array.nth(state, i + 1)
array.push(new_state, !((!left && !center && !right) || (left && !center && !right) || (left && center && right)))
return new_state
func print_state[state: Array]: void
for i in 0..state->size
if array.nth(state, i)
io.print_char('#')
else
io.print_char(' ')
io.println("")
func main[] : i64
let SIZE = 60
let state = []
for i in 0..SIZE
array.push(state, false)
array.push(state, true)
print_state(state)
for i in 0..SIZE
state = rule110_step(state)
print_state(state)
array.free(state)