Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,36 @@
function print_cells {
local chars=(. '#') cell
for cell; do
printf '%s' "${chars[$cell]}"
done
printf '\n'
}
function next_gen {
local rule=$1
shift
cells=("$@")
local -i l c r bit
for (( l=$#-1, c=0, r=1; c < $#;
l=(l+1)%$#, c+=1, r=(r+1)%$# )); do
local left=${cells[l]} current=${cells[c]} right=${cells[r]}
(( bit = 1<<(left<<2 | current<<1 | right) ))
printf '%d\n' $(( rule & bit ? 1 : 0 ))
done
}
function automaton {
local size=${1:-32} rule=${2:-90}
local stop=${3:-$(( size/2 ))}
local i gen cells=()
for (( i=0; i<size; ++i )); do
cells+=( $(( i == size/2 )) )
done
for (( gen=0; gen<stop; ++gen )); do
printf "%${#stop}d: " "$gen"
print_cells "${cells[@]}"
cells=($(next_gen "$rule" "${cells[@]}"))
done
}
automaton "$@"