commit 89ceb12ff923ad3c2c714f8e1a40130cd99b73ff Author: olemorud Date: Thu Jun 22 17:35:48 2023 +0200 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`. 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