External Answer Checkers - PGML

From WeBWorK_wiki
Jump to navigation Jump to search

Using ANS() with PGML

Although it is customary to provide the correct answer right for an answer blank after the blank in the PGML code, it is also possible to provide the answer later using the ANS() macro, as is done with BEGIN_TEXT/END_TEXT blocks. To do this, simply don't put any braces after the answer blank.

 loadMacros("contextLimitedNumeric.pl");
 Context("LimitedNumeric");
 $a = 3; $b = 5;
 $answer = Real($a+$b);
 
 BEGIN_PGML
 The value of [: [$a] + [$b] :] is [_______]
 END_PGML
 
 ANS($answer->cmp);

You can use all the traditional or MathObject based answer checkers this way.

If there is more than one answer blank, then the answer checkers are paired with them by order, as usual.

 Context("Numeric");
 Context()->functions->disable("sqrt");
 Context()->operators->remove("^","**");
 $a = 16; $b = 9;
 $ra = Real(sqrt($a)); $rb = Real(sqrt($b));
 
 BEGIN_PGML
 The value of [: sqrt([$a]) :] is [___________]  
 The value of [: sqrt([$b]) :] is [___________]
 END_PGML
 
 ANS(
   $ra->cmp,
   $rb->cmp
 );