Editing MathObject Answers - PGML

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 52: Line 52:
 
END_PGML
 
END_PGML
   
This is particularly useful if you want to provide a [[#Custom_Checkers|custom checker]].
+
This is particularly useful if you want to provide a custom checker.
 
== Answer Arrays ==
 
 
For a Matrix, Vector, or Point object, you may want to ask the student to type each entry in a separate answer blank, rather than entering the whole object in one answer blank (for example, to prevent the use of vector calculations). In the traditional <code>BEGIN_TEXT/END_TEXT</code> setting, you would use its <code>ans_array()</code> rather than its <code>ans_rule()</code> method.
 
 
In PGML, you indicate that an answer blank should produce an answer array by putting an asterisk between the blank and the answer.
 
 
Context("Matrix");
 
$M = Matrix([1,2],[3,4]);
 
 
BEGIN_PGML
 
If [`M = [$M]`], then [`M^2 =`] [___]*{$M**2}
 
END_PGML
 
 
Here, the size of the answer rule determines the size of each rule in the answer array.
 
 
== MultiAnswer Checkers ==
 
 
To use a MultiAnswer object in PGML, create it outside the PGML block, and use the MultiAnswer variable for more than one answer blank.
 
 
loadMacros("parserMultiAnswer.pl");
 
 
$mp = MultiAnswer(12,6)->with(
 
singleResult => 1,
 
separator => " and ",
 
tex_separator => "\text{ and }",
 
checker => sub {
 
my $correct= shift; my $student = shift;
 
my ($ca,$cb) = @$correct;
 
my ($sa,$sb) = @$student;
 
my $ok = ($ca == $sa && $cb == $sb) ||
 
($ca == $sb && $cb == $sa);
 
return ($ok ? (1,1) : (0,0));
 
},
 
);
 
 
BEGIN_PGML
 
[_______]{$mp} and [_______]{$mp}
 
END_PGML
 
 
See the [[http://webwork.maa.org/pod/pg_TRUNK/macros/parserMultiAnswer.pl.html documentation for parserMultiAnswer.pl]] for more details about using MultiAnswer objects.
 
 
== Custom Checkers ==
 
 
Since custom checkers for math objects usually consist of more than one line, it is awkward to include them within the PGML block itself. Instead, use a variable to store the answer checker with the custom checker and pass that to PGML.
 
   
 
Context("Point");
 
Context("Point");
Line 73: Line 73:
 
[: (x,y) :] = [______________________]{$cmp}
 
[: (x,y) :] = [______________________]{$cmp}
 
END_TEXT
 
END_TEXT
  +
  +
== Answer Arrays ==
  +
  +
For a Matrix, Vector, or Point object, you may want to ask the student to type each entry in a separate answer blank, rather than entering the whole object in one answer blank (for example, to prevent the use of vector calculations). In the traditional <code>BEGIN_TEXT/END_TEXT</code> setting, you would use its <code>an_array()</code> rather than its <code>ans_rule()</code> method.
  +
  +
In PGML, you indicate that an answer blank should produce an answer array by putting an asterisk between the blank and the answer.
  +
  +
Context("Matrix");
  +
$M = Matrix([1,2],[3,4]);
  +
  +
BEGIN_PGML
  +
If [`M = [$M]`], then [`M^2 =`] [___]*{$M**2}
  +
END_PGML
  +
  +
Here, the size of the answer rule determines the size of each rule in the answer array.
  +
  +
== MultiAnswer Checkers ==
  +
  +
== Custom Checkers ==
   
 
[[Category:PGML]]
 
[[Category:PGML]]

Please note that all contributions to WeBWorK_wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see The WeBWorK Project wiki:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)