version 1.86, 2004/06/09 21:08:21
|
version 1.94, 2005/02/18 22:52:50
|
Line 34 $rad2deg=180.0/$pi;
|
Line 34 $rad2deg=180.0/$pi;
|
$deg2rad=$pi/180.0; |
$deg2rad=$pi/180.0; |
$"=' '; |
$"=' '; |
|
|
|
sub check_commas { |
|
my ($response)=@_; |
|
#print("$response "); |
|
my @numbers=split(',',$response); |
|
#print(" numbers ".join('-',@numbers)." "); |
|
if (scalar(@numbers) > 1) { |
|
#print(" numbers[0] ".$numbers[0]." "); |
|
if (length($numbers[0]) > 3 || length($numbers[0]) == 0) { return -1; } |
|
shift(@numbers); |
|
#print(" numbers ".scalar(@numbers)." "); |
|
while (scalar(@numbers) > 1) { |
|
#print(" numbers ".join('-',@numbers)." "); |
|
if (length($numbers[0]) != 3) { return -2; } |
|
shift(@numbers); |
|
} |
|
my ($number)=split('\.',$numbers[0]); |
|
#print(" number ".$number." "); |
|
#print(" numbers[0] ".$numbers[0]." "); |
|
if (length($number) != 3) { return -3; } |
|
} else { |
|
my ($number)=split('\.',$numbers[0]); |
|
if (length($number) > 3) { return -4; } |
|
} |
|
return 1; |
|
} |
|
|
sub caparesponse_check { |
sub caparesponse_check { |
my ($answer,$response)=@_; |
my ($answer,$response)=@_; |
#not properly used yet: calc |
#not properly used yet: calc |
Line 41 sub caparesponse_check {
|
Line 67 sub caparesponse_check {
|
my $type=$LONCAPA::CAPAresponse_args{'type'}; |
my $type=$LONCAPA::CAPAresponse_args{'type'}; |
my $tol=$LONCAPA::CAPAresponse_args{'tol'}; |
my $tol=$LONCAPA::CAPAresponse_args{'tol'}; |
my $sig=$LONCAPA::CAPAresponse_args{'sig'}; |
my $sig=$LONCAPA::CAPAresponse_args{'sig'}; |
my $ans_fmt=$LONCAPA::CAPAresponse_args{'ans_fmt'}; |
my $ans_fmt=$LONCAPA::CAPAresponse_args{'format'}; |
my $unit=$LONCAPA::CAPAresponse_args{'unit'}; |
my $unit=$LONCAPA::CAPAresponse_args{'unit'}; |
my $calc=$LONCAPA::CAPAresponse_args{'calc'}; |
my $calc=$LONCAPA::CAPAresponse_args{'calc'}; |
my $samples=$LONCAPA::CAPAresponse_args{'samples'}; |
my $samples=$LONCAPA::CAPAresponse_args{'samples'}; |
Line 69 sub caparesponse_check {
|
Line 95 sub caparesponse_check {
|
$answer=~s/ +/ /g; |
$answer=~s/ +/ /g; |
$response=~s/ +/ /g; |
$response=~s/ +/ /g; |
} |
} |
|
if ($type eq 'float' && $unit=~/\$/) { |
|
if ($response!~/^\$/) { return "NO_UNIT: Missing \$ "; } |
|
$response=~s/\$//g; |
|
} |
|
if ($type eq 'float' && $unit=~/\,/ && (&check_commas($response)<0)) { |
|
return "COMMA_FAIL:"; |
|
} |
|
$ans_fmt=~s/\W//g; |
|
$unit=~s/[\$,]//g; |
if ($type eq 'float') { $response=~s/,//g; } |
if ($type eq 'float') { $response=~s/,//g; } |
|
|
if (length($response) > 500) { return "TOO_LONG: Answer too long"; } |
if (length($response) > 500) { return "TOO_LONG: Answer too long"; } |
|
|
if ($type eq '' ) { |
if ($type eq '' ) { |
Line 127 sub caparesponse_check {
|
Line 163 sub caparesponse_check {
|
elsif ($result == '9') { $result='ANS_CNT_NOT_MATCH'; } |
elsif ($result == '9') { $result='ANS_CNT_NOT_MATCH'; } |
elsif ($result =='10') { $result='SUB_RECORDED'; } |
elsif ($result =='10') { $result='SUB_RECORDED'; } |
elsif ($result =='11') { $result='BAD_FORMULA'; } |
elsif ($result =='11') { $result='BAD_FORMULA'; } |
|
elsif ($result =='12' && !$response) { $result='MISSING_ANSWER'; } |
|
elsif ($result =='12') { $result='WANTED_NUMERIC'; } |
elsif ($result =='13') { $result='UNIT_INVALID_INSTRUCTOR'; } |
elsif ($result =='13') { $result='UNIT_INVALID_INSTRUCTOR'; } |
elsif ($result =='141') { $result='UNIT_INVALID_STUDENT'; } |
elsif ($result =='141') { $result='UNIT_INVALID_STUDENT'; } |
elsif ($result =='142') { $result='UNIT_INVALID_STUDENT'; } |
elsif ($result =='142') { $result='UNIT_INVALID_STUDENT'; } |
Line 344 sub random_multivariate_normal {
|
Line 382 sub random_multivariate_normal {
|
my ($item_cnt,$seed,$mean,$covar) = @_; |
my ($item_cnt,$seed,$mean,$covar) = @_; |
my @oldseed=&random_get_seed(); |
my @oldseed=&random_get_seed(); |
&random_set_seed_from_phrase($seed); |
&random_set_seed_from_phrase($seed); |
@retArray=&math_random_multivariate_normal($item_cnt,@$mean,@$covar); |
my @retArray=&math_random_multivariate_normal($item_cnt,@$mean,@$covar); |
&random_set_seed(@oldseed); |
&random_set_seed(@oldseed); |
return @retArray; |
return @retArray; |
} |
} |
Line 354 sub random_multinomial {
|
Line 392 sub random_multinomial {
|
my @oldseed=&random_get_seed(); |
my @oldseed=&random_get_seed(); |
my @retArray; |
my @retArray; |
&random_set_seed_from_phrase($seed); |
&random_set_seed_from_phrase($seed); |
@retArray=&math_random_multinomial($item_cnt,@p); |
my @retArray=&math_random_multinomial($item_cnt,@p); |
&random_set_seed(@oldseed); |
&random_set_seed(@oldseed); |
return @retArray; |
return @retArray; |
} |
} |
Line 508 sub chemparse {
|
Line 546 sub chemparse {
|
} |
} |
next; |
next; |
} |
} |
$token =~ /^\s*(\d*)(.*)/; |
$token =~ /^\s*(\d*(?:&frac\d\d)?)(.*)/; |
$formula .= $1 if ($1 > 1); # stoichiometric coefficient |
$formula .= $1 if ($1 ne '1'); # stoichiometric coefficient |
|
|
my $molecule = $2; |
my $molecule = $2; |
# subscripts |
# subscripts |
Line 523 sub chemparse {
|
Line 561 sub chemparse {
|
$formula .= $molecule.' '; |
$formula .= $molecule.' '; |
} |
} |
# get rid of trailing space |
# get rid of trailing space |
$formula =~ s/(\Q${nbsp}\E| )$//; |
$formula =~ s/(\ \;| )$//; |
|
|
return &xmlparse($formula); |
return &xmlparse($formula); |
} |
} |
|
|