Rev 14625 | Blame | Compare with Previous | Last modification | View Log | RSS feed
!nocache
varcnt=$[min($varcnt,$limit_var)]
replycnt=$[min($replycnt,$limit_reply)]
choicecnt=$[min($choicecnt,$limit_choice)]
!reset fill_check fill_checked
!for i=1 to $choicecnt
choice$i=
cbad=!listuniq $(choicebad$i)
cgood=!listuniq $(choicegood$i)
cbad=!listcomplement $cgood in $cbad
choicebad$i=$cbad
itemg=!itemcnt $cgood
itemb=!itemcnt $cbad
!if $itemg<=1 and $qcmgood>0 and $itemb>1
shf=!shuffle $itemb-1
ccbad=!item 2 to -1 of $cbad
tmp=!item 1 of $cbad
ccbad=!item $shf of $ccbad
cbad=$tmp,$ccbad
cli=!item 1 to $qcmpresent of $cgood,$cbad
!else
shf=!shuffle $cgood,$cbad
cli=!item 1 to $qcmpresent of $shf
!if $qcmpresent<=$itemb
qcmgood=0
!endif
!endif
choiceitems$i=!itemcnt $cli
num=yes
!for j=1 to $(choiceitems$i)
t=!item $j of $cli
t=$[$t]
!if NaN isin $t
num=no
!endif
!next j
!if shuffle iswordof $(choiceoption$i)
choicelist$i=!shuffle $cli
!else
!if $num=yes
choicelist$i=!sort numeric list $cli
!else
choicelist$i=!sort nocase list $cli
!endif
!endif
choicegood$i=!listintersect $cgood and $cli
!next i
!for i=1 to $replycnt
reply$i=
replygood$i=!trim $(replygood$i)
!!FIXME to replace by !reset inputprompt[$limit_reply] when it will be avalaible
!!useful for exercises by createxo
!if $(inputprompt$i)!=$empty
!reset inputprompt$i
!endif
!next i
!read oef/valsave.proc
!if $ansorder=$empty
!for i=1 to $choicecnt
ansorder=!append item c to $ansorder
!next i
!for i=1 to $replycnt
ansorder=!append item r to $ansorder
!next i
!endif
!bound precision between integer 20 and 100000000 default 10000
!default leftrange=-5
!default rightrange=5
!default cchoicecnt=$choicecnt
!default creplycnt=$replycnt
wims_compare_precision=$precision
question_url=
status=waiting
!default conditioncnt=0