So created a bash script, which was useful for searching a high period gun in B36/S237[8] rules.
Code: Select all
#!/bin/bash
# AUTHOR: NASZVADI P., 2016, no commercial use, no violation of author's country's law
set -u
genstream() {
# arguments
local Repeat="$1"
local PeriodX="$2"
local PeriodY="$PeriodX"
local Lx="$3"
local Ly="$4"
local Gtype="${5:-g3p1}"
local i
# selecting glider direction
case "${Gtype:1:1}" in
1)
Ly=$((Ly-3))
PeriodY="-$PeriodY"
;;
3)
Lx=$((Lx-3))
Ly=$((Ly-3))
PeriodX="-$PeriodX"
PeriodY="-$PeriodY"
;;
7)
;;
9)
Lx=$((Lx-3))
PeriodX="-$PeriodX"
;;
*) echo 'ERROR'
;;
esac
for ((i=0;i<Repeat;++i)); do
echo "#P $((Lx+(i*PeriodX))) $((Ly+(i*PeriodY)))"
eval 'echo -e "$'"${Gtype}"'"'
done
}
g1p1='.*\n*\n***'
g1p2='*.*\n**\n.*'
g1p3='*\n*.*\n**'
g1p4='..*\n**\n.**'
g3p1='..*\n*.*\n.**'
g3p2='*\n.**\n**'
g3p3='.*\n..*\n***'
g3p4='*.*\n.**\n.*'
g7p1='**\n*.*\n*'
g7p2='.**\n**\n..*'
g7p3='***\n*\n.*'
g7p4='.*\n**\n*.*'
g9p1='***\n..*\n.*'
g9p2='.*\n.**\n*.*'
g9p3='.**\n*.*\n..*'
g9p4='**\n.**\n*'
cat <<END
#Life 1.05
#R 237/36
END
#P 0 0
#"P"ERIOD = 24/"glider period"
P=6
#"R"repeat times
R=12
# Gap aligned to 10n
GAP=$(( (((2*(4+P)*R)+9)/10)*10 ))
MAINX=0
MAINY=0
for ALL in {-4..0}_{0..4}x{0..4}_{-4..0}; do
ARR=( $(echo $ALL | sed 's/ *[^ ]*x\(0_-*[0-2]\|[0-2]_0\) *\| *\(-[0-2]_0\|0_[0-2]\)x[^ ]* */ /g;y/x_/ /' ) )
if [[ ${#ARR[@]} = 4 ]]; then
for g9 in 1 2 3 4; do for g1 in 1 2 3 4; do
genstream "$R" "$P" "$MAINX" "$MAINY"
genstream "$R" "$P" "$((MAINX+ARR[0]))" "$((MAINY+ARR[1]))" g9p"$g9"
genstream "$R" "$P" "$((MAINX+ARR[2]))" "$((MAINY+ARR[3]))" g1p"$g1"
MAINX=$((MAINX+GAP))
done; done
fi
done