;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)