optimized 1dlife
This commit is contained in:
@@ -18,15 +18,15 @@ state="${state//[^0]/1}"
|
|||||||
slen=$((${#state} - 1)) # length + 4 (temporary padding) - 5
|
slen=$((${#state} - 1)) # length + 4 (temporary padding) - 5
|
||||||
|
|
||||||
# complete rule mapping
|
# complete rule mapping
|
||||||
declare -ar values=(0 0 0 1 0 0 0 1 0 1 1 1 0 1 1 0 \
|
declare -ar rule=(0 0 0 1 0 0 0 1 0 1 1 1 0 1 1 0 \
|
||||||
0 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1)
|
0 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1)
|
||||||
|
|
||||||
for ((i=0; i<ITERS; ++i)); do
|
for ((i=0; i<ITERS; ++i)); do
|
||||||
state="00${state}00" # pad the current state from both sides
|
state="00${state}00" # pad the current state from both sides
|
||||||
newstate=''
|
newstate=''
|
||||||
for ((k=0; k<slen; ++k)); do
|
for ((k=0; k<slen; ++k)); do
|
||||||
vidx="${state:k:5}"
|
vidx="${state:k:5}"
|
||||||
newstate="${newstate}${values[$((2#$vidx))]}"
|
newstate="${newstate}${rule[$((2#$vidx))]}"
|
||||||
done
|
done
|
||||||
state="$newstate"
|
state="$newstate"
|
||||||
newstate="${newstate//0/ }"
|
newstate="${newstate//0/ }"
|
||||||
|
|||||||
Reference in New Issue
Block a user