We've
been discovering a few numerical bugs with the code we've written for a
problem using the Parser. If you enter seed 1234 and enter the point
(-10.6, -2.9), then Webwork marks the answer as partially incorrect. If
you enter points with integer coefficients such as (2,-5) or (-10,-3),
the answer is marked as correct. Some decimal answers do work, but many
don't. I don't see any problem with the code (which is attached below).
By the way, the problem below is a simplification that still shows the
error.
Thanks in advance for your suggestions,
Tom
## DESCRIPTION
## KEYWORDS('vectors', 'independent', 'dependent', 'relation')
##
## ENDDESCRIPTION
DOCUMENT(); # This should be the first executable line in the problem.
loadMacros(
PG.pl,
PGbasicmacros.pl,
PGchoicemacros.pl,
PGanswermacros.pl,
PGgraphmacros.pl,
PGmatrixmacros.pl,
PGnumericalmacros.pl,
PGauxiliaryFunctions.pl,
PGmorematrixmacros.pl,
PGdiffeqmacros.pl,
"Parser.pl",
"Generic.pl"
);
TEXT(beginproblem());
$showPartialCorrectAnswers = 1;
$p1 = non_zero_random(-6,6,1);
$p2 = random(-5,5,2);
$q1 = non_zero_random(-6,6,1);
$q2 = random(-6,6,2);
$ans1 = $q1-$p1;
$ans2 = $q2-$p2;
$vecp = Matrix->new_column_matrix([$p1, $p2]);
$slope = Matrix->new_column_matrix([$ans1, $ans2]);
$v1 = new Matrix(2,1);
$v1->assign(1,1, $ans1);
$v1->assign(2,1, $ans2);
BEGIN_TEXT
Enter a point on the line
{ mbox( '( v = )', display_matrix($vecp), '( + t) ', display_matrix($slope), '.' ) }
$BR
{ mbox( '(x=)', answer_matrix(2,1,5) ) }
END_TEXT
$spot=0;
ANS(generic_cmp("1", type => 'Number', length=>1, checker=> ~~&check));
ANS(generic_cmp("1", type => 'Number', length=>1, checker=> ~~&check));
sub check{</p><p>
my $stu=shift();</p><p>
$w[$spot]=$stu->extract(1); </p><p>
if($spot<1){</p><p>
$spot=$spot+1; 1; </p><p>
}else{</p><p>
$ww[0]=$w[0]-$p1;</p><p>
$ww[1]=$w[1]-$p2;</p><p>
$avec1=$v1->element(1,1);</p><p>
$avec2=$v1->element(2,1);</p><p>
if($avec1 * $ww[1] == $ww[0] * $avec2){</p><p>
1;</p><p>
}else{</p><p>
0;</p><p>
}
}
}
ENDDOCUMENT() ;
<| Post or View Comments |>
|