RosettaCodeData/Task/Penneys-game/UNIX-Shell/penneys-game.sh

71 lines
1.2 KiB
Bash

#!/bin/bash
main() {
echo "Penney's Game"
echo -n "Flipping to see who goes first ... "
if [[ $(flip) == H ]]; then
echo "I do."
p2=$(choose_sequence)
echo "I choose: $p2"
else
echo "You do."
fi
while true; do
echo "Enter your three-flip sequence:"
read p1
case "$p1" in
"$p2") echo "Sequence must be different from mine";;
[hHTt][hHtT][hHtT]) break;;
*) echo "Sequence must be three H's or T's";;
esac
done
p1=$(tr a-z A-Z <<<"$p1")
if [ -z "$p2" ]; then
p2=$(choose_sequence "$p1")
echo "I choose: $p2"
fi
echo
echo "Here we go. $p1, you win; $p2, I win."
flips=
while true; do
flip=$(flip)
echo -n $flip
flips+=$flip
while (( ${#flips} > 3 )); do
flips="${flips#?}"
done
case "$flips" in
*$p1) echo $'\nYou win!'; exit 0;;
*$p2) echo $'\nI win!'; exit 1;;
esac
done
}
choose_sequence() {
local result
if (( $# )); then
case "$1" in
?Hh?) result=T;;
*) result=H;;
esac
result+="${1%?}"
else
result=$(flip)$(flip)$(flip)
fi
echo "$result"
}
flip() {
if (( RANDOM % 2 )); then
echo H
else
echo T
fi
}
main "$@"