Bash_Boggle

I wrote this little script one evening a long time ago, for someone who wanted to take pre-printed sheets to work, as it was more stimulating than the work…

#!/bin/bash
# Print out a Boggle board to stdout.
# The 16 dice and their 6 sides each, this creates Dice[n]=
Dice=\
(QBAJOM EFIEYH ODENWS HPSEIN GKYLUE ILUWRG CITAOA BYLTIA \
 DZNVEA ODUNKT RHASOM PAECMD GVZTEI OFIRXB REALSC PELUTS)
#
AllDice="  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15"
 
# Cut the string that represents the order of the dice in 
# the tray 99 time at some random point, then swap the parts
# around. Repeat as needed.
for ((a=1; a <= 100 ; a++))
do
   LeftCut=$(($(($(($RANDOM%15))*3))+3))
   RightCut=$((LeftCut+3))
   LeftEnd=${AllDice:0:LeftCut} 
   RightEnd=${AllDice:RightCut}
   Middle=${AllDice:LeftCut:3}
   AllDice="$Middle$LeftEnd$RightEnd"
done
# Roll the Dice to get what side is up.
Count=0
for Each in $AllDice
    do
    Side=$(($RANDOM%6))
    Die=${Dice[Each]:Side:1}
    [ $Die == Q ] && echo -n $Die"u " || echo -n $Die"  "
    [ $((Count%4)) -eq 3 ] && echo
    (( Count++ ))
    done