version 1.33, 2004/06/07 21:17:42
|
version 1.34, 2004/06/07 21:56:24
|
Line 35 BEGIN {
|
Line 35 BEGIN {
|
&Apache::lonxml::register('Apache::chemresponse',('organicresponse','organicstructure','reactionresponse')); |
&Apache::lonxml::register('Apache::chemresponse',('organicresponse','organicstructure','reactionresponse')); |
} |
} |
|
|
|
sub chem_standard_order { |
|
my ($reaction) = @_; |
|
my ($re,$pr) = split(/->|<=>/,$reaction); |
|
my @reactants = split(/\s\+/,$re); |
|
my @products = split(/\s\+/,$pr); |
|
foreach my $substance (@reactants,@products) { |
|
$substance =~ s/(\^\d*)\s+/$1_/g; # protect superscript space |
|
$substance =~ s/\s*//g; # strip whitespace |
|
$substance =~ s/_/ /g; # restore superscript space |
|
} |
|
@reactants = sort @reactants; |
|
@products = sort @products; |
|
my $standard = ''; |
|
foreach my $substance (@reactants) { |
|
$standard .= $substance; |
|
$standard .= ' + '; |
|
} |
|
$standard =~ s/ \+ $//; # get rid of trailing plus sign |
|
$standard .= ' -> '; |
|
foreach my $substance (@products) { |
|
$standard .= $substance; |
|
$standard .= ' + '; |
|
} |
|
$standard =~ s/ \+ $//; # get rid of trailing plus sign |
|
return $standard; |
|
} |
|
|
sub separate_jme_window { |
sub separate_jme_window { |
my ($smile_input,$jme_input,$molecule,$options)=@_; |
my ($smile_input,$jme_input,$molecule,$options)=@_; |
my $smilesection; |
my $smilesection; |
Line 345 sub end_reactionresponse {
|
Line 372 sub end_reactionresponse {
|
my $ad; |
my $ad; |
foreach my $answer (@answers) { |
foreach my $answer (@answers) { |
&Apache::lonxml::debug("submitted a $response for $answer<br \>\n"); |
&Apache::lonxml::debug("submitted a $response for $answer<br \>\n"); |
if ($response eq $answer) { |
if (&chem_standard_order($response) eq |
|
&chem_standard_order($answer)) { |
$ad='EXACT_ANS'; |
$ad='EXACT_ANS'; |
} else { |
} else { |
$ad='INCORRECT'; |
$ad='INCORRECT'; |