## WeBWorK Problems

by Justin Sukiennik -
Number of replies: 1
Hi,

We are having problems with students taking a Test on WeBWorK with the parserMultianswer.pl macro. When the students, click the "Preview" button, they get a garble of characters in the second answer, i.e. "B = " answer. For instance, if there are two problems with this parserMultiAnswer.pl in use, they will receive the answers for "B=" combined in each answer blank with "B=". In other words WeBWorK seems to be combining all the denominators into a string and replacing the student's answer with the long string. I have placed two problems from the Test that should suffice for an example.

Sincerely,
Justin

##DESCRIPTION
##ENDDESCRIPTION

##DBsubject('Algebra')
## DBchapter('Basic Algebra')
## Date('10/27/2009')
## Author('Justin Sukiennik')
## Institution('University of Minnesota')
## TitleText1('Algebra for College Students')
## EditionText1('8')
## AuthorText1('Kaufmann, Schwitters')
## Section1('5.3')
## Problem1('12')

########################################################################

DOCUMENT();

"PGstandard.pl", # Standard macros for PG language
"MathObjects.pl",
#"source.pl", # allows code to be displayed on certain sites.
#"PGcourse.pl", # Customization file for the course
);

########################################################################

$showPartialCorrectAnswers = 0; TEXT(beginproblem()); ######################################################################## Context("Numeric");$a = random(5,7,2);
$b = list_random(2,4);$c = Compute("$a-2")->reduce;$d = Compute("5*$b^2")->reduce;$numerator = Real("2*$a-2");$denominator = Real("$a");$radical = Real("5");

########################################################################

$mp = MultiAnswer($numerator,$denominator)->with( singleResult => 1, separator => "/", tex_separator => "/", checker => sub { my ($correct,$student,$self) = @_; # get the parameters

my ( $p1,$p2 ) = @{$correct}; # get the correct num, denom my ($p1stu, $p2stu ) = @{$student};# get the student's num, denom

my $isPreview =$main::inputs_ref->{previewAnswers};

$numeratorValid = ($p1==$p1stu || Compute("-1")*$p1==$p1stu );$denominatorValid = ( $p2==$p2stu || Compute("-1")*$p2==$p2stu );
$quotientValid = ($p1/$p2 == Compute($p1stu)/Compute($p2stu) ); if (!$isPreview) { # Don't show messages if previewing....
Value::Error("Your numerator (and maybe more) is incorrect")
unless $numeratorValid; Value::Error("Your denominator is incorrect") unless$denominatorValid;
Value::Error("Your fraction has the wrong sign")
unless $quotientValid; } return$quotientValid;
},
);

########################################################################

Context()->texStrings;
BEGIN_TEXT
Use the distributive property to help simplify the numerical expression
$\frac{c}{a}\sqrt{5}+\frac{1}{b}\sqrt{d}$

into the form $$\frac{A}{B} \sqrt{C}$$, where $$A$$, $$B$$, and $$C$$ are all integers.
$PAR Answer: $$A =$$ \{$mp->ans_rule(15)\}, $$B =$$ \{$mp->ans_rule(15)\}, and $$C =$$ \{ ans_rule(15) \}$HR
END_TEXT
Context()->normalStrings;

########################################################################

ANS( $mp->cmp ); ANS($radical->cmp );

ENDDOCUMENT();

##DESCRIPTION
## Algebra: Multiplying rational expressions
##ENDDESCRIPTION

##KEYWORDS('algebra', 'rational expressions', 'multiplying')

##DBsubject('Algebra')
## DBchapter('Basic Algebra')
## DBsection('Algebraic Expressions')
## Date('10/11/2009')
## Author('Justin Sukiennik')
## Institution('University of Minnesota')
## TitleText1('Algebra for College Students')
## EditionText1('8')
## AuthorText1('Kaufmann, Schwitters')
## Section1('4.2')
## Problem1('30')

########################################################################

DOCUMENT();

"PGstandard.pl", # Standard macros for PG language
"MathObjects.pl",
#"source.pl", # allows code to be displayed on certain sites.
#"PGcourse.pl", # Customization file for the course
);

########################################################################

TEXT(beginproblem());

$showPartialCorrectAnswers = 1; ######################################################################## Context("Numeric"); Context()->variables->are(n=>'Real');$a = random(3,7,2);
$b = random(2,4,2);$c = random(2,5,1);

$poly1 = Compute("10n^2+(5*$a-2)n-$a") -> reduce; #(5n-1)(2n+$a)
$poly2 = Compute("$c n^2+ (2*$c+1)n +2") -> reduce; #(n+2)($c n +1)
$poly3 = Compute("$b n^2+ 2*$b n") -> reduce; #(n+2)($b n)
$poly4 = Compute("2n^2+($a+2)n+$a") -> reduce; #(n+1)(2n+$a)

$ans1 = Compute("5*$b n^2 - $b n");$ans2 = Compute("$c n^2 + (1+$c)n + 1");

########################################################################

$mp = MultiAnswer($ans1,$ans2)->with( singleResult => 1, checker => sub { my ($correct,$student,$self) = @_; # get the parameters

my ( $p1,$p2 ) = @{$correct}; # get the correct num, denom my ($p1stu, $p2stu ) = @{$student};# get the student's num, denom

my $isPreview =$main::inputs_ref->{previewAnswers};

$numeratorValid = ($p1==$p1stu || Compute("-1")*$p1==$p1stu );$denominatorValid = ( $p2==$p2stu || Compute("-1")*$p2==$p2stu );
$quotientValid = ($p1/$p2 == Compute($p1stu)/Compute($p2stu) ); if (!$isPreview) { # Don't show messages if previewing....
unless $numeratorValid; Value::Error("Your denominator is incorrect") unless$denominatorValid;
unless $quotientValid; } return$quotientValid;
},
);

########################################################################

Context()->texStrings;
BEGIN_TEXT
Multiply the two rational expressions
$\frac{poly1}{poly2} \cdot \frac{poly3}{poly4}.$

Express your answer in simplest form $$\frac{A}{B}$$.$PAR Answer: $$A =$$ \{$mp->ans_rule(20)\} and $$B =$$ \{$mp->ans_rule(20)\} END_TEXT Context()->normalStrings; ######################################################################## ANS($mp->cmp );

ENDDOCUMENT();