version 1.120, 2006/11/10 17:45:52
|
version 1.123, 2006/12/15 22:11:43
|
Line 256 sub caparesponse_check {
|
Line 256 sub caparesponse_check {
|
return ($result,$reterror) |
return ($result,$reterror) |
} |
} |
|
|
sub maxima_cas_formula_fix { |
|
my ($expression)=@_; |
|
return &implicit_multiplication($expression); |
|
} |
|
|
|
sub capa_formula_fix { |
|
my ($expression)=@_; |
|
return &implicit_multiplication($expression); |
|
} |
|
|
|
sub implicit_multiplication { |
|
my ($expression)=@_; |
|
# Escape scientific notation, so 3e8 does not become 3*e*8 |
|
# 3e8 -> 3&8; 3e-8 -> 3&-8; 3E+8 -> e&+8 |
|
$expression=~s/(\d+)e([\+\-]*\d+)/$1\&\($2\)/gsi; |
|
# 3x10^8 -> 3&8; 3*10^-8 -> 3&-8 |
|
$expression=~s/(\d+)(?:x|\*)10(?:\^|\*\*)([\+\-]*\d+)/$1\&\($2\)/gsi; |
|
# Fill in multiplication signs |
|
# a b -> a*b;3 b -> 3*b;3 4 -> 3*4 |
|
$expression=~s/(\w)\s+(\w)/$1\*$2/gs; |
|
# )( -> )*(; ) ( -> )*( |
|
$expression=~s/\)\s*\(/\)\*\(/gs; |
|
# 3a -> 3*a; 3( -> 3*(; 3 ( -> 3*(; 3A -> 3*A |
|
$expression=~s/(\d)\s*([a-zA-Z\(])/$1\*$2/gs; |
|
# a ( -> a*( |
|
$expression=~s/(\w)\s+\(/$1\*\(/gs; |
|
# a3 -> a*3; |
|
$expression=~s/([a-zA-Z])(\d)/$1\*$2/gs; |
|
# )a -> )*a; )3 -> )*3; ) 3 -> )*3 |
|
$expression=~s/\)\s*(\w)/\)\*$1/gs; |
|
# 3&8 -> 3e8; 3&-4 -> 3e-4 |
|
$expression=~s/(\d+)\&\(([\+\-]*\d+)\)/$1e$2/gs; |
|
return $expression; |
|
} |
|
|
|
sub caparesponse_check_list { |
sub caparesponse_check_list { |
my $responses=$LONCAPA::CAPAresponse_args{'response'}; |
my $responses=$LONCAPA::CAPAresponse_args{'response'}; |
&LONCAPA_INTERNAL_DEBUG(" answer is ". |
# &LONCAPA_INTERNAL_DEBUG(" answer is ". |
&LONCAPA_INTERNAL_Dumper($LONCAPA::CAPAresponse_answer).":\n"); |
# &LONCAPA_INTERNAL_Dumper($LONCAPA::CAPAresponse_answer).":\n"); |
&LONCAPA_INTERNAL_DEBUG(" respons is ". |
# &LONCAPA_INTERNAL_DEBUG(" respons is ". |
&LONCAPA_INTERNAL_Dumper($responses).":\n"); |
# &LONCAPA_INTERNAL_Dumper($responses).":\n"); |
&LONCAPA_INTERNAL_DEBUG("args ".join(':',%LONCAPA::CAPAresponse_args)); |
&LONCAPA_INTERNAL_DEBUG("args ".join(':',%LONCAPA::CAPAresponse_args)); |
my $type = $LONCAPA::CAPAresponse_args{'type'}; |
my $type = $LONCAPA::CAPAresponse_args{'type'}; |
&LONCAPA_INTERNAL_DEBUG("Got type :$type:\n"); |
&LONCAPA_INTERNAL_DEBUG("Got type :$type:\n"); |
Line 324 sub caparesponse_check_list {
|
Line 290 sub caparesponse_check_list {
|
$responses->[$which]=[$responses->[$which]]; |
$responses->[$which]=[$responses->[$which]]; |
} |
} |
} |
} |
&LONCAPA_INTERNAL_DEBUG(" parsed response is ". |
# &LONCAPA_INTERNAL_DEBUG(" parsed response is ". |
&LONCAPA_INTERNAL_Dumper($responses).":\n"); |
# &LONCAPA_INTERNAL_Dumper($responses).":\n"); |
foreach my $which (0..($num_input_lines-1)) { |
foreach my $which (0..($num_input_lines-1)) { |
my $answer_size = |
my $answer_size = |
scalar(@{$LONCAPA::CAPAresponse_answer->{'answers'}[$which]}); |
scalar(@{$LONCAPA::CAPAresponse_answer->{'answers'}[$which]}); |
Line 365 sub caparesponse_check_list {
|
Line 331 sub caparesponse_check_list {
|
} |
} |
|
|
|
|
&LONCAPA_INTERNAL_DEBUG(&LONCAPA_INTERNAL_Dumper($responses)); |
# &LONCAPA_INTERNAL_DEBUG(&LONCAPA_INTERNAL_Dumper($responses)); |
my %memoized; |
my %memoized; |
if ($LONCAPA::CAPAresponse_answer->{'type'} eq 'ordered') { |
if ($LONCAPA::CAPAresponse_answer->{'type'} eq 'ordered') { |
for (my $i=0; $i<scalar(@$responses);$i++) { |
for (my $i=0; $i<scalar(@$responses);$i++) { |