From c82f49d1809a3e5c56da8f851923cb8590ee66d6 Mon Sep 17 00:00:00 2001 From: Luxferre Date: Thu, 28 May 2026 07:02:36 +0300 Subject: [PATCH] 1dlife --- 1dlife | 37 +++++++++++++++++++++++++++++++++++++ README.md | 1 + 2 files changed, 38 insertions(+) create mode 100755 1dlife diff --git a/1dlife b/1dlife new file mode 100755 index 0000000..55a98a5 --- /dev/null +++ b/1dlife @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +# Jon Millen's 1D Game of Life in pure Bash +# Usage: echo 'state' | 1dlife [iterations] +# Created by Luxferre in 2026, released into public domain + +ITERS="$1" +[[ -z "$ITERS" ]] && ITERS=$(($(tput lines) - 1)) +[[ -z "$RENDER_CHAR" ]] && RENDER_CHAR='#' + +# read and process the state +IFS= read -r state +state="${state//[[:space:]]/0}" +state="${state//[^0]/1}" +slen=$((${#state} - 1)) # length + 4 (temporary padding) - 5 + +# complete rule mapping +declare -A values=( + 00000 0 00001 0 00010 0 00011 1 + 00100 0 00101 0 00110 0 00111 1 + 01000 0 01001 1 01010 1 01011 1 + 01100 0 01101 1 01110 1 01111 0 + 10000 0 10001 1 10010 1 10011 1 + 10100 0 10101 1 10110 1 10111 0 + 11000 1 11001 1 11010 1 11011 0 + 11100 1 11101 0 11110 0 11111 1) + +for ((i=0; i