All pastes #49946 Raw Edit

Untitled

public text v1 · immutable
#49946 ·published 2006-04-19 14:40 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})