--- loncom/homework/default_homework.lcpm 2001/07/23 22:40:59 1.32
+++ loncom/homework/default_homework.lcpm 2001/10/05 22:28:31 1.38
@@ -7,27 +7,23 @@
# 05/31/2001 H. K. Ng
#
#init some globals
-$RANDOMINIT=0;
+$hidden::RANDOMINIT=0;
$pi=atan2(1,1)*4;
$rad2deg=180.0/$pi;
$deg2rad=$pi/180.0;
sub caparesponse_check {
- my $answer=''; #done
- my $type=''; #done
+ #not properly used yet: calc
+ #not to be used: $ans_fmt
+ my ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc) =
+ eval $_[1].';return ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc);';
+
my $tol_type=''; # gets it's value from whether tol has a % or not done
- my $tol=''; #done
- my $sig=''; #done lowerbnd,upperbnd
my $sig_lbound=''; #done
my $sig_ubound=''; #done
- my $ans_fmt='';
- my $unit=''; #done
- my $calc='';
my ($response,$expr)=@_;
- ($answer,$type,$tol,$sig,$ans_fmt,
- $unit,$calc) = eval $expr.';return ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc);';
#type's definitons come from capaParser.h
my $message='';
#remove leading and trailing whitespace
@@ -88,14 +84,14 @@ sub caparesponse_check {
elsif ($result =='12') { $result='WANTED_NUMERIC'; }
else {$result = "ERROR: Unknown Result:$result:$@:";}
- return "$result:
Error $error:
Answer $answer:
Response $response:
type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$units
$message$expr";
+ return "$result:
Error $error:
Answer $answer:
Response $response:
type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$unit|
$message$expr";
}
-sub caparesponse_check_list {
- my ($response,$expr)=@_;
+sub get_array_args {
+ my ($expr,$arg)=@_;
# do these first, because who knows what varname the instructor might have used
# but it probably isn't $CAPARESPONSE_CHECK_LIST_answer
- my $CAPARESPONSE_CHECK_LIST_answer = eval $expr.';return $answer';
+ my $CAPARESPONSE_CHECK_LIST_answer = eval $expr.';return $'.$arg; #'
my (@list) = eval $CAPARESPONSE_CHECK_LIST_answer;
my $result='';
$result.="error:$@:
";
@@ -104,6 +100,12 @@ sub caparesponse_check_list {
$result.="list zero is undefined
";
$list[0]=$CAPARESPONSE_CHECK_LIST_answer;
}
+ return @list;
+}
+
+sub caparesponse_check_list {
+ my ($response,$expr)=@_;
+ my (@list) = &get_array_args($expr,'answer');
my $aresult='';
my $current_answer;
$result.="Got response :$CAPARESPONSE_CHECK_LIST_answer:$list[0]:
";
@@ -189,7 +191,10 @@ sub hinton {
sub random {
my ($start,$end,$step)=@_;
- if ( ! $RANDOMINIT ) { srand($external::randomseed); $RANDOMINIT=1; }
+ if ( ! $hidden::RANDOMINIT ) {
+ srand($external::randomseed);
+ $hidden::RANDOMINIT=1;
+ }
my $num=1+int(($end-$start)/$step);
my $result=$start + int(rand() * $num)*$step;
return $result;
@@ -268,16 +273,9 @@ sub random_noncentral_f {
}
sub random_multivariate_normal {
- my ($item_cnt,$seed,@mean) = @_;
- return "Number of deviates must be greater than 0" if $item_cnt <= 0;
- my (@covar,@retArray);
- my $ind = 0;
- while ($ind<$item_cnt) {
- push @covar, pop (@mean);
- $ind++;
- }
+ my ($item_cnt,$seed,$mean,$covar) = @_;
&random_set_seed_from_phrase($seed);
- @retArray=&math_random_multivariate_normal($item_cnt,@mean,@covar);
+ @retArray=&math_random_multivariate_normal($item_cnt,@$mean,@$covar);
return @retArray;
}