Skip to content

Instantly share code, notes, and snippets.

@kuwa72
Created March 31, 2017 03:46
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kuwa72/bc081e2073d79b45ff387eebe92e0d17 to your computer and use it in GitHub Desktop.
Save kuwa72/bc081e2073d79b45ff387eebe92e0d17 to your computer and use it in GitHub Desktop.
Life game(requirements: zsh, egzact. Tested on OSX).
#!/usr/bin/env zsh
FO=$(cat)
X=$(head -n 1 <<<$FO)
YL=$(echo $FO|wc -l|bc)
FF=$((echo $X|tr 1 0;echo $FO;echo $X|tr 1 0)|addl 0\ |addr \ 0)
for L in {1..$YL};do
for C in {1..$(echo $X|awk '{print NF}')}; do
echo $FF | sed -n $L,$((L+2))p | cut -d \ -f $C,$((C+1)),$((C+2)) | xargs | {
read B
if echo $B | grep -q '. . . . 1 . . . .';then
S=$(echo $B|tr \ +|addr -- -1|bc)
if [ $S -le 1 -o $S -ge 4 ];then
echo -n 0
else
echo -n 1
fi
else
if [ $(tr \ +<<<$B|bc) -eq 3 ];then
echo -n 1
else
echo -n 0
fi
fi
}
echo -n \
done
echo
done
@kuwa72
Copy link
Author

kuwa72 commented Mar 31, 2017

This is life game evaluation a turn. Read stdin (space splitted 2 dimention map like 0 0 0\n0 1 0\n0 0 0), output evaluated a turn.

usage.

$ echo '0 1 0\n0 1 0\n0 1 0' | zsh lg.sh |zsh lg.sh

@kuwa72
Copy link
Author

kuwa72 commented Mar 31, 2017

example Glider

~/s/egzact ❯❯❯ echo "0 0 0 0 0 0 0 0 0 0\n0 1 0 0 0 0 0 0 0 0\n0 0 1 0 0 0 0 0 0 0\n1 1 1 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0" | zsh lg.sh                                     master ✱ ◼
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
~/s/egzact ❯❯❯ echo "0 0 0 0 0 0 0 0 0 0\n0 1 0 0 0 0 0 0 0 0\n0 0 1 0 0 0 0 0 0 0\n1 1 1 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0" | zsh lg.sh | zsh lg.sh                         master ✱ ◼
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
~/s/egzact ❯❯❯ echo "0 0 0 0 0 0 0 0 0 0\n0 1 0 0 0 0 0 0 0 0\n0 0 1 0 0 0 0 0 0 0\n1 1 1 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0" | zsh lg.sh | zsh lg.sh | zsh lg.sh             master ✱ ◼
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
~/s/egzact ❯❯❯ echo "0 0 0 0 0 0 0 0 0 0\n0 1 0 0 0 0 0 0 0 0\n0 0 1 0 0 0 0 0 0 0\n1 1 1 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 0 0 0 0" | zsh lg.sh | zsh lg.sh | zsh lg.sh | zsh lg.sh
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment