From 89ceb12ff923ad3c2c714f8e1a40130cd99b73ff Mon Sep 17 00:00:00 2001 From: olemorud Date: Thu, 22 Jun 2023 17:35:48 +0200 Subject: [PATCH] Add rule110.sed `rule110.sed` is an executable sed script that calculates the next iteration of rule 110 cellular automaton. E.g. `./rule110.sed <<<0001` outputs `0011`. --- rule110.sed | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100755 rule110.sed diff --git a/rule110.sed b/rule110.sed new file mode 100755 index 0000000..443e61f --- /dev/null +++ b/rule110.sed @@ -0,0 +1,21 @@ +#!/usr/bin/sed -Ef + +# Translate to intermediate step +# - Lowercase means previous state was 0 +# - Uppercase means previous state was 1 +# - [Aa] means new state is 1 +# - [Bb] means new state is 0 +# - Assume edges are 0 +:a +s/([B1])1([B1$])/\1B\2/g # 111 -> 0 +t a +:b +s/([B1])0([B1$])/\1a\2/g # 101 -> 1 +t b +:c +s/([a0^])0([B1$])/\1a\2/g # 001 -> 1 +t c + +# Translate to final results +s/a/1/g +s/B/0/g