All pastes #49950 Raw Edit

Mine

public text v1 · immutable
#49950 ·published 2006-04-19 14:57 UTC
rendered paste body
;ROOMMATES IN A HAT
[riah]
;who are the roommates?
exten => s,1,set(__ROWS=6)
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(__CROP=0)
exten => s,n,set(__COUNT=1)
exten => s,n,set(__TOTALSCORE=0)
exten => s,n,set(__EXITLOOP=0)
exten => s,n,set(__LAST=0)
 
;for each roommate prompt for a weight
exten => s,n,set(__COUNT=$[${TRUNC} + 1])                       ;set roommate counter
exten => s,n,while($[${COUNT} <= $[${ROWS} - ${CROP}]])      ;while we havent assigned a weight...
        exten => s,n(reask),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(dontask),set(__ROWS=$[${ROWS} - ${CROP}])
 
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}] & $[${PRIZES} > $[${ROWS} - ${CROP}]])
        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,macroif($[${MATEWEIGHT${SUBCOUNT}} < ${MATEWEIGHT$[${SUBCOUNT} + 1]}]?sort|${MATEWEIGHT${SUBCOUNT}},${MATEWEIGHT$[${SUBCOUNT} + 1]},${ROOMMATE${SUBCOUNT}},${ROOMMATE$[${SUBCOUNT} + 1]},${SUBCOUNT},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,gotoif($[${MATEWEIGHT${COUNT}} != ${MATEWEIGHT$[${COUNT} + 1]}] | $[${PRIZES} >= $[${ROWS} - ${CROP}]]?winners,1:trunc,1)  
exten => s,n,wait(5)
 
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,set(__LAST=$[${LAST} + 1])
exten => _X,n,gotoif($[${MATEWEIGHT${COUNT}} = 0]?zerocrop)
exten => _X,n,goto(s,incr)
exten => _X,n(zerocrop),macro(sort|${MATEWEIGHT${COUNT}},${MATEWEIGHT$[${ROWS} - ${CROP}]},${ROOMMATE${COUNT}},${ROOMMATE$[${ROWS} - ${CROP}]},${COUNT},1)
exten => _X,n,set(__CROP=$[${CROP} + 1])
exten => _X,n,gotoif($[${LAST} = ${ROWS}]?s,dontask)
exten => _X,n,goto(s,reask)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
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(s,repeat)
 
[macro-sort]
exten => s,1,set(__TEMP=${ARG2})
exten => s,n,set(__MATEWEIGHT$[${ARG5} + ${ARG6}]=${ARG1})
exten => s,n,set(__MATEWEIGHT${ARG5}=${TEMP})
exten => s,n,set(__TEMP=${ARG4})
exten => s,n,set(__ROOMMATE$[${ARG5} + ${ARG6}]=${ARG3})
exten => s,n,set(__ROOMMATE${ARG5}=${TEMP})