rendered paste body;ROOMMATES IN A HAT
[riah]
;who are the roommates?
exten => s,1,set(__WINNERS=0)
exten => s,n,set(__ROOMMATE1=Brad)
exten => s,n,set(__ROOMMATE2=Brian)
exten => s,n,set(__ROOMMATE3=James)
exten => s,n,set(__ROOMMATE4=Jeff)
exten => s,n,set(__ROOMMATE5=Marc)
exten => s,n,set(__ROOMMATE6=Aubrey)
exten => s,n,set(__PRIZES=2)
exten => s,n,set(__TRUNC=0)
exten => s,n,set(__COUNT=1)
exten => s,n,set(__TOTALSCORE=0)
exten => s,n,set(__EXITLOOP=0)
;for each roommate prompt for a weight
exten => s,n,set(__COUNT=$[${TRUNC} + 1]) ;set roommate counter
exten => s,n,while($[${COUNT}<7]) ;while we havent assigned a weight to all the roommates...
exten => s,n,background(beep) ;prompt with a tone...
exten => s,n,waitexten(5) ;and givem five seconds to enter an extension 0-9
exten => s,n(incr),set(__COUNT=$[${COUNT}+1]) ;then increment the counter
exten => s,n,endwhile
exten => s,n,set(__ROWS=$[${COUNT} - 1])
exten => s,n(repeat),set(__COUNT=$[${TRUNC} + 1])
exten => s,n,while($[${COUNT} <= ${ROWS}])
exten => s,n,set(__MATEWEIGHT${COUNT}=${MATH(${MATEWEIGHT${COUNT}}*100,int)})
exten => s,n,set(__MATEWEIGHT${COUNT}=${MATH(${MATEWEIGHT${COUNT}}/${TOTALSCORE},int)})
exten => s,n,set(__COUNT=$[${COUNT} + 1])
exten => s,n,endwhile
exten => s,n,set(__COUNT=$[${TRUNC} + 1])
exten => s,n,while($[${COUNT} <= ${ROWS}])
exten => s,n(iloop),while($[${EXITLOOP} != 1])
exten => s,n,random(${MATEWEIGHT${COUNT}}:s,finalscore)
exten => s,n,set(__TRIES=$[${TRIES} + 1])
exten => s,n,goto(iloop)
exten => s,n(finalscore),set(__MATEWEIGHT${COUNT}=${TRIES})
exten => s,n,set(__EXITLOOP=1)
exten => s,n,endwhile
exten => s,n,set(EXITLOOP=0)
exten => s,n,set(__COUNT=$[${COUNT}+1])
exten => s,n,set(__TRIES=1)
exten => s,n,endwhile
exten => s,n,set(__COUNT=$[${TRUNC} + 1])
exten => s,n,set(__SUBCOUNT=1)
exten => s,n,while($[${COUNT} < ${ROWS}])
exten => s,n,while($[${SUBCOUNT} < $[${ROWS} - $[${COUNT} -1]]])
exten => s,n,gotoif($[${MATEWEIGHT${SUBCOUNT}} < ${MATEWEIGHT$[${SUBCOUNT} + 1]}]?sort,1)
exten => s,n(incr2),set(__SUBCOUNT=$[${SUBCOUNT} + 1])
exten => s,n,endwhile
exten => s,n,set(__COUNT=$[${COUNT} + 1])
exten => s,n,set(__SUBCOUNT=1)
exten => s,n,endwhile
exten => s,n,set(__COUNT=${PRIZES})
exten => s,n,set(__MATEWEIGHT${COUNT} = ${MATEWEIGHT$[${COUNT} + 1]})
exten => s,n,wait(2)
exten => s,n,gotoif($[${MATEWEIGHT${COUNT}} != ${MATEWEIGHT$[${COUNT} + 1]}]?winners,1:trunc,1)
exten => winners,1,while($[${COUNT} > 0])
exten => winners,n,noop(${ROOMMATE${COUNT}} is a winner)
exten => winners,n,set(__COUNT=$[${COUNT} -1])
exten => winners,n,endwhile
exten => winners,n,hangup
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;take the weight and build the array;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
exten => _X,1,set(__MATEWEIGHT${COUNT}=${EXTEN}) ;give each roommate a relative weight using the counter
exten => _X,n,set(__TOTALSCORE=$[${TOTALSCORE} + ${MATEWEIGHT${COUNT}}])
exten => _X,n,goto(s,incr)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
exten => sort,1,set(__TEMP=${MATEWEIGHT$[${SUBCOUNT} + 1]})
exten => sort,n,set(__MATEWEIGHT$[${SUBCOUNT} + 1]=${MATEWEIGHT${SUBCOUNT}})
exten => sort,n,set(__MATEWEIGHT${SUBCOUNT}=${TEMP})
exten => sort,n,set(__TEMP=${ROOMMATE$[${SUBCOUNT} + 1]})
exten => sort,n,set(__ROOMMATE$[${SUBCOUNT} + 1]=${ROOMMATE${SUBCOUNT}})
exten => sort,n,set(__ROOMMATE${SUBCOUNT}=${TEMP})
exten => sort,n,goto(s,incr2)
exten => trunc,1,while($[${COUNT} > 1])
exten => trunc,n,gotoif($[${MATEWEIGHT${COUNT}} != ${MATEWEIGHT$[${COUNT} - 1]}]?posttrunc)
exten => trunc,n,set(__COUNT=$[${COUNT} - 1])
exten => trunc,n,endwhile
exten => trunc,n(posttrunc),set(__TRUNC=$[${PRIZES} - ${COUNT}])
exten => trunc,n,set(__COUNT=${PRIZES}+1)
exten => trunc,n,while($[${COUNT} < ${ROWS}])
exten => trunc,n,gotoif($[${MATEWEIGHT${COUNT}} != ${MATEWEIGHT$[${COUNT} + 1]}]?postcrop)
exten => trunc,n,set(__COUNT=$[${COUNT} + 1])
exten => trunc,n,endwhile
exten => trunc,n(postcrop),set(__CROP=$[${ROWS} - ${COUNT}])
exten => trunc,n,goto(crop,1)