71 lines
1.2 KiB
Bash
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 "$@"
|