#!/bin/bash

echon () { echo "$@" | tr -d '\012' ; }

echon 'number of sides per die (default=6): ' ; read sides
test -z "$sides" && sides=6
echon 'number of dice (default=2): ' ; read dice
test -z "$dice" && dice=2

min=`expr 1 '*' $dice`
max=`expr $sides '*' $dice`
echo range: $min to $max

i=$min ; while [ $i -le $max ] ; do range[$i]=0 ; i=`expr $i + 1` ; done

possibilities () #sides/die dice-count this-die sums-so-far -- sums-w-this-die
{
	local sides=$1 ; shift
	local dice=$1 ; shift
	local this=$1 ; shift
	if [ $# -eq 0 ] ; then set 0 ; fi
	if [ $this -le $dice ] ; then
		local new_sums=''
		local sum
		for sum in $* ; do
			local i=1
			while [ $i -le $sides ] ; do
				new_sums="$new_sums `expr $sum + $i`"
				i=`expr $i + 1`
			done
		done
		next=`expr $this + 1`
		possibilities $sides $dice $next $new_sums
	else
		echo $*
	fi
}

# get and evaluate odds of all possible rolls
total_poss=0
for poss in `possibilities $sides $dice 1` ; do
	sum=`expr ${range[$poss]} + 1`
	eval range[$poss]=$sum
	total_poss=`expr $total_poss + 1`
done
d
# display odds
i=$min
while [ $i -le $max ] ; do
	echo $i: ${range[$i]}/$total_poss
	i=`expr $i + 1`
done

score[2]=10
score[3]=10
score[4]=40
score[5]=40
score[6]=40
score[7]=-10
score[8]=40
score[9]=40
score[10]=40
score[11]=-10
score[12]=0

score=0
while true ; do
	echon '------input roll: '
	read roll
	if [ -z "$roll" ] ; then
		echo quitting
		break
	fi
	echo 'odds of roll: '${range[$roll]}/$total_poss
	result=${score[$roll]}
	echo 'result of roll: '$result
	score=`expr $score + $result`
	echo 'updated score: '$score
done

echo exiting...
#--------------------------------------------------eof

