Skip to content

Commit

Permalink
Add inital files
Browse files Browse the repository at this point in the history
  • Loading branch information
nightmono committed Aug 6, 2024
0 parents commit 337a220
Show file tree
Hide file tree
Showing 3 changed files with 141 additions and 0 deletions.
61 changes: 61 additions & 0 deletions rule-n.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/usr/bin/python3

PATTERNS = (
(1, 1, 1),
(1, 1, 0),
(1, 0, 1),
(1, 0, 0),
(0, 1, 1),
(0, 1, 0),
(0, 0, 1),
(0, 0, 0)
)

def get_rule_set(rule):
binary = bin(rule)[2:].zfill(8)
return set(i for i in range(8) if binary[i] == "1")

def new_state(rule_set, l, m, r):
for i in rule_set:
if (l, m, r) == PATTERNS[i]:
return 1
return 0

def tick(cells, rule_set):
next_gen = [0] * len(cells)

for i in range(len(cells)):
l = cells[i-1]
m = cells[i]
r = cells[(i+1)%len(cells)]

next_gen[i] = new_state(rule_set, l, m, r)

return next_gen

def main():
import time
import sys

rule = 110
cell_length = 60

args = sys.argv
for i, arg in enumerate(args):
if arg == "--rule":
rule = int(args[i+1])
elif arg == "--length" or arg == "--len":
cell_length = int(args[i+1])

cells = [0] * cell_length
cells[cell_length//2] = 1
rule_set = get_rule_set(rule)
print(rule_set)

while 1:
print("".join(map(str, cells)).replace("0", " ").replace("1", "#"))
cells = tick(cells, rule_set)
time.sleep(0.05)

if __name__ == "__main__":
main()
40 changes: 40 additions & 0 deletions static/rule-110.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/usr/bin/python3

patterns = (
(1, 1, 1),
(1, 1, 0),
(1, 0, 1),
(1, 0, 0),
(0, 1, 1),
(0, 1, 0),
(0, 0, 1),
(0, 0, 0)
)

def rule110(l, m, r):
for i in (1, 2, 4, 5, 6):
if (l, m, r) == patterns[i]:
return 1
return 0

def tick(cells):
next_gen = [0] * len(cells)

for i in range(len(cells)):
l = cells[i-1]
m = cells[i]
r = cells[(i+1)%len(cells)]

next_gen[i] = rule110(l, m, r)

return next_gen

import time

cells = [0] * 60
cells[len(cells)//2] = 1

while 1:
print("".join(map(str, cells)).replace("0", " ").replace("1", "#"))
cells = tick(cells)
time.sleep(0.1)
40 changes: 40 additions & 0 deletions static/rule-30.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/usr/bin/python3

patterns = (
(1, 1, 1),
(1, 1, 0),
(1, 0, 1),
(1, 0, 0),
(0, 1, 1),
(0, 1, 0),
(0, 0, 1),
(0, 0, 0)
)

def rule30(l, m, r):
for i in (3, 4, 5, 6):
if (l, m, r) == patterns[i]:
return 1
return 0

def tick(cells):
next_gen = [0] * len(cells)

for i in range(len(cells)):
l = cells[i-1]
m = cells[i]
r = cells[(i+1)%len(cells)]

next_gen[i] = rule30(l, m, r)

return next_gen

import time

cells = [0] * 60
cells[len(cells)//2] = 1

while 1:
print("".join(map(str, cells)).replace("0", " ").replace("1", "#"))
cells = tick(cells)
time.sleep(0.1)

0 comments on commit 337a220

Please sign in to comment.