--- loncom/homework/default_homework.lcpm 2000/10/12 21:51:03 1.5 +++ loncom/homework/default_homework.lcpm 2000/10/25 22:02:53 1.7 @@ -4,6 +4,27 @@ # $RANDOMINIT=0; +sub caparesponse_check { + my $answer=''; + my $type=''; + my $tol_type=''; + my $tolerance=''; + my $sig_lbound=''; + my $sig_ubound=''; + my $ans_fmt=''; + my $unit_str=''; + my $calc=''; + my ($response,$expr)=@_; + + ($answer,$type,$tol_type,$tolerance,$sig_lbound,$sig_ubound,$ans_fmt, + $unit_str,$calc) = eval $expr.'return $answer,$type,$tol_type,$tolerance,$sig_lbound,$sig_ubound,$ans_fmt,$unit_str,$calc'; + my $result = &caparesponse_capa_check_answer($response,$answer,$type, + $tol_type,$tolerance, + $sig_lbound,$sig_ubound, + $ans_fmt, $unit_str,$calc); + return ":$result:$response:$answer:"; +} + sub tex { if ( $external::target eq "tex" ) { #$SCRIPT_RESULT.=@_[0]; @@ -70,8 +91,18 @@ sub format { sub map { my $num = $#_/2; my $i; + my @used; + my @permutation; + for ($i=0; $i < $num;) { + $rand = &random(1,$num,1); + if ( $used[$rand] == '0' ) { + $i++; + $used[$rand]='1'; + $permutation[$i]=$rand; + } + } for ( $i=1 ; $i<$num+1 ; $i++ ) { - ${$_[$i]}=$_[$i+$num] + ${$_[$permutation[$i]]}=$_[$i+$num] } } @@ -79,7 +110,9 @@ sub choose { my $num = $_[0]; return $_[$num]; } +#$external::randomseed=time; #$a=2; #$b=2; -#&map(1,\$a,\$b,3,4); +#$c=2; +#&map(1,\$a,\$b,\$c,3,4,5); #print $a."\n".$b."\n";