From 730e6bb14f4b8efff7af47e1e0a1a7fb087ef234 Mon Sep 17 00:00:00 2001 From: Tarik Hijstek Date: Mon, 17 Oct 2022 23:46:32 +0200 Subject: [PATCH] Yo I prob need an allocator --- src/main.zig | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/main.zig b/src/main.zig index 1db81e3..f440db4 100644 --- a/src/main.zig +++ b/src/main.zig @@ -56,10 +56,10 @@ pub fn rule1Test(input: []Symbol ) bool{ } pub fn rule1(input: []Symbol) []Symbol{ const lastEl:Symbol = input[input.len]; - + const u: [1]Symbol = .{Symbol.U}; + if(lastEl == Symbol.I){ - - return input ++ &Symbol.U; + return input ++ u; } } @@ -72,10 +72,12 @@ pub fn rule2(input: []Symbol) []Symbol{ } pub fn rule3Test(input: []Symbol) bool { + const pattern: [3]Symbol = .{Symbol.I, Symbol.I, Symbol.I}; + for(input)|symbol, i|{ if(symbol == Symbol.I){ var streak = input[i..i+2]; - if(mem.eql(u2, streak, [_]Symbol{Symbol.I ** 3}) ){ + if(mem.eql(Symbol, streak, &pattern) ){ return true; } } @@ -84,13 +86,15 @@ pub fn rule3Test(input: []Symbol) bool { } pub fn rule3(input: []Symbol) []Symbol{ // III => U + const pattern: [3]Symbol = .{Symbol.I, Symbol.I, Symbol.I}; + const u: [1]Symbol = .{Symbol.U}; //var i:u64 = 0; for(input)|symbol, i|{ if(symbol == Symbol.I){ var streak = input[i..i+2]; - if(mem.eql(u2, streak, []Symbol{Symbol.I ** 3})){ - return input[0..i] ++ Symbol.U ++ input[i+2..]; + if(mem.eql(Symbol, streak, &pattern)){ + return input[0..i] ++ u ++ input[i+2..]; } } } @@ -98,21 +102,24 @@ pub fn rule3(input: []Symbol) []Symbol{ } pub fn rule4Test(input: []Symbol) bool { + const pattern: [2]Symbol = .{Symbol.U, Symbol.U}; + for(input)|symbol, i|{ if(symbol == Symbol.U){ - var streak = input[i..i+2]; - return (mem.eql(u2, streak, []Symbol{Symbol.U ** 3})); + var streak = input[i..i+1]; + return (mem.eql(Symbol, streak, &pattern)); } } return false; } pub fn rule4(input: []Symbol) []Symbol{ // UU => - + const pattern: [2]Symbol = .{Symbol.U, Symbol.U}; for(input)|symbol, i|{ if(symbol == Symbol.U){ var streak = input[i..i+2]; - if(mem.eql(u2, streak, []Symbol{Symbol.U ** 3})){ + if(mem.eql(Symbol, streak, &pattern)){ return input[0..i] ++ input[i+1..]; } } @@ -120,7 +127,9 @@ pub fn rule4(input: []Symbol) []Symbol{ } pub fn finish(input: []Symbol) bool{ - return mem.eql(u2, input, []Symbol{Symbol.M, Symbol.U}); + const pattern: [2]Symbol = .{Symbol.M, Symbol.U}; + + return mem.eql(Symbol, input, &pattern); }