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.
  +
  +
Context("Point");
  +
$a = random(2,10,1);
  +
$x = random(-5,5,1);
  +
$y = $a - $x;
  +
  +
$cmp = Point($x,$y)->cmp(
  +
showCoordinateHints => 0, # doesn't make sense to give hints in this case
  +
checker => sub {
  +
my ($correct,$student,$ansHash) = @_; # get correct and student MathObjects
  +
my ($sx,$sy) = $student->value; # get coordinates of student answer
  +
return ($sx + $sy == $a ? 1 : 0); # return 1 if correct, 0 otherwise
  +
}
  +
);
  +
  +
BEGIN_PGML
  +
Find a point [:(x,y):] that is a solution to [: x+y = [$a] :].
  +
  +
[: (x,y) :] = [______________________]{$cmp}
  +
END_TEXT
   
 
== Answer Arrays ==
 
== 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.
+
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.
 
In PGML, you indicate that an answer blank should produce an answer array by putting an asterisk between the blank and the answer.
Line 96: Line 96:
   
 
== Custom Checkers ==
 
== 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");
 
$a = random(2,10,1);
 
$x = random(-5,5,1);
 
$y = $a - $x;
 
 
$cmp = Point($x,$y)->cmp(
 
showCoordinateHints => 0, # doesn't make sense to give hints in this case
 
checker => sub {
 
my ($correct,$student,$ansHash) = @_; # get correct and student MathObjects
 
my ($sx,$sy) = $student->value; # get coordinates of student answer
 
return ($sx + $sy == $a ? 1 : 0); # return 1 if correct, 0 otherwise
 
}
 
);
 
 
BEGIN_PGML
 
Find a point [:(x,y):] that is a solution to [: x+y = [$a] :].
 
 
[: (x,y) :] = [______________________]{$cmp}
 
END_TEXT
 
   
 
[[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)