From d8f2ff28db2415807a6d4295b27528b5a383d3ef Mon Sep 17 00:00:00 2001 From: Toni Date: Tue, 3 Jun 2025 14:21:30 +0200 Subject: [PATCH] rule110 exampel --- examples/rule110.zr | 38 ++++++++++++++++++++++++++++++++++++++ test.zr | 5 +---- 2 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 examples/rule110.zr diff --git a/examples/rule110.zr b/examples/rule110.zr new file mode 100644 index 0000000..02f349a --- /dev/null +++ b/examples/rule110.zr @@ -0,0 +1,38 @@ +func rule110_step[state: Array] : Array + let new_state: Array = Array.new() + + for i in 0:Array.size(state) + let left: Bool = false + if i - 1 >= 0 + left = Array.nth(state, i-1) + let center: Bool = Array.nth(state, i) + let right: Bool = false + if i + 1 < Array.size(state) + right = Array.nth(state, i+1) + + Array.push(new_state, !((!left && !center && !right) || (left && !center && !right) || (left && center && right))) + + return new_state + +func to_str[state: Array]: String + // TODO: very leaky + let o: String = "" + for i in 0:Array.size(state) + if Array.nth(state, i) + o = concat(o, "#") + else + o = concat(o, " ") + return o + +func main[] : I64 + let SIZE: I64 = 60 + + let state: Array = Array.new() + for i in 0:SIZE + Array.push(state, false) + Array.push(state, true) + + print(to_str(state)) + for i in 0:SIZE + state = rule110_step(state) + print(to_str(state)) \ No newline at end of file diff --git a/test.zr b/test.zr index ddd6776..d1f2532 100644 --- a/test.zr +++ b/test.zr @@ -1,5 +1,4 @@ func run_test[x: String] : I64 - // TODO: escape sequences printf("\033[93mBuilding %s...\033[0m", x) let cmd: String = concat("./target/release/zern examples/", x) @@ -23,6 +22,4 @@ func main[] : I64 let files: Array = OS.listdir("examples/") for i in 0:Array.size(files) - let file: String = Array.nth(files, i) - run_test(file) - free(file) \ No newline at end of file + run_test(Array.nth(files, i)) \ No newline at end of file