From WeBWorK_wiki
Revision as of 16:16, 13 June 2008 by Darnold (talk | contribs) (New page: <h2>Your title here: PG Code Snippet</h2> <!-- Header for these sections -- no modification needed --> <p style="background-color:#eeeeee;border:black solid 1px;padding:3px;"> <em>Thi...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Your title here: PG Code Snippet

This code snippet shows the essential PG code to check student answers that are equations. Note that these are insertions, not a complete PG file. This code will have to be incorporated into the problem file on which you are working.

Problem Techniques Index

PG problem file Explanation
  loadMacros("any macros files that are needed");

To do ..(what you are doing)........., we don't have to change the tagging and documentation section of the problem file. In the initialization section, we need to include the macros file -------.pl.

Context( "Point" );

push( @point, Point( random(1,5,1) , random(-5,-1,1) ) );
push( @point, Point( random(5,10,1) , random(6,11,1) ) );

($d1, $d2) = ($point[0] - $point[1])->value; # $d1 = x1 - x2, $d2 = y1 - y2

# Need to put () around $d1 and $d2 because if $d1 = -6, then -6^2 = -36, not 36, as desired.
$length = Compute("sqrt( ($d1)^2+($d2)^2 )");
$mid = ( $point[1] + $point[0] ) / 2;

We don't use Context("Vector") and norm( $point[0] - $point[1] ) to determine length because we don't want to accept an answer like |<5,7>-<7,8>| You could use $length=norm( $point[0] - $point[1] ); with the Vector context if you didn't care about accepting answers that are valid in the Vector context.

Notes: on using this and related Contexts.


Consider the two points \( $point[0] \) and \( $point[1] \).
The distance between them is:\{ $length->ans_rule() \}
The midpoint of the line segment
that joins them is:\{ $mid->ans_rule() \}


The problem text section of the file is as we'd expect.

ANS( $length->cmp );
ANS( $mid->cmp );

As is the answer.

Problem Techniques Index