AnswerUpToMultiplication1: Difference between revisions

From WeBWorK_wiki
Jump to navigation Jump to search
(PGML example link)
(Switch to PGML and remove AnswerFormatHelp)
Line 16: Line 16:


<tr valign="top">
<tr valign="top">
<th> PG problem file </th>
<th style="width: 40%"> PG problem file </th>
<th> Explanation </th>
<th> Explanation </th>
</tr>
</tr>
Line 43: Line 43:


loadMacros(
loadMacros(
"PGstandard.pl",
  'PGstandard.pl',
"MathObjects.pl",
  'MathObjects.pl',
"AnswerFormatHelp.pl",
  'PGML.pl',
  'PGcourse.pl'
);
);


Line 64: Line 65:
<td style="background-color:#ffffdd;border:black 1px dashed;">
<td style="background-color:#ffffdd;border:black 1px dashed;">
<pre>
<pre>
Context("Numeric");
Context('Numeric');


$aSolution = Compute("(x-2)(x+1)");
$sol_str = '(x-2)*(x+1)';
 
$ans = Compute($sol_str)->cmp(checker => sub {
    my ( $correct, $student, $self ) = @_;
    my $context = Context()->copy;
    return 0 if $student == 0;
    $context->flags->set(no_parameters=>0);
    $context->variables->add('C0'=>'Parameter');
    my $c0 = Formula($context,'C0');
    $student = Formula($context,$student);
    $correct = Formula($context,"$c0 * $sol_str");
    return $correct == $student;
  });
</pre>
</pre>
</td>
</td>
Line 72: Line 85:
<p>
<p>
<b>Setup:</b>  
<b>Setup:</b>  
</p>
<p>
We use a local context with an adaptive parameter to check the answer.  For more on adaptive parameters, see [http://webwork.maa.org/wiki/AdaptiveParameters AdaptiveParameters]. This builds a custom checker that checks if the student answer is a parameter <code>C0</code> multiple of the correct answer in <code>$sol_str</code>.
</p>
</p>
</td>
</td>
Line 81: Line 97:
<td style="background-color:#ffdddd;border:black 1px dashed;">
<td style="background-color:#ffdddd;border:black 1px dashed;">
<pre>
<pre>
Context()->texStrings;
BEGIN_PGML
BEGIN_TEXT
Find a quadratic equation in terms of the variable
Find a quadratic equation in terms of the variable  
[` x `] with roots [` -1 `] and [` 2 `].
\( x \) with roots \( -1 \) and \( 2 \).
 
$BR
[` y = `] [______________]{$ans}
$BR
 
\( y = \) \{ ans_rule(20) \}
[@ helpLink('formulas') @]*
\{ AnswerFormatHelp("formulas") \}
END_PGML
END_TEXT
Context()->normalStrings;
</pre>
</pre>
<td style="background-color:#ffcccc;padding:7px;">
<td style="background-color:#ffcccc;padding:7px;">
<p>
<p>
<b>Main Text:</b>
<b>Main Text:</b>
</p>
</td>
</tr>
<!-- Answer evaluation section -->
<tr valign="top">
<td style="background-color:#eeddff;border:black 1px dashed;">
<pre>
$showPartialCorrectAnswers = 1;
ANS( $aSolution->cmp(checker => sub {
      my ( $correct, $student, $self ) = @_;
      my $context = Context()->copy;
      return 0 if $student == 0;
      $context->flags->set(no_parameters=>0);
      $context->variables->add('C0'=>'Parameter');
      my $c0 = Formula($context,'C0');
      $student = Formula($context,$student);
      $correct = Formula($context,"$c0 * $aSolution");
      return $correct == $student;
    }
) );
</pre>
<td style="background-color:#eeccff;padding:7px;">
<p>
<b>Answer Evaluation:</b>
We use a local context with an adaptive parameter to check the answer.  For more on adaptive parameters, see [http://webwork.maa.org/wiki/AdaptiveParameters AdaptiveParameters]  When <code>$aSolution</code> is "complicated", you may need to replace <code>$c0 * $aSolution</code> in the custom answer checker by its value <code>$c0 * (x-2)(x+1)</code> in order to get things to work correctly.
</p>
</p>
</td>
</td>
Line 132: Line 118:
<td style="background-color:#ddddff;border:black 1px dashed;">
<td style="background-color:#ddddff;border:black 1px dashed;">
<pre>
<pre>
Context()->texStrings;
BEGIN_PGML_SOLUTION
BEGIN_SOLUTION
${PAR}SOLUTION:${PAR}
Solution explanation goes here.
Solution explanation goes here.
END_SOLUTION
END_PGML_SOLUTION
Context()->normalStrings;
 
COMMENT('MathObject version.');


ENDDOCUMENT();
ENDDOCUMENT();

Revision as of 11:25, 11 March 2023

Answer is a Function up to Multiplication by a Nonzero Constant

Click to enlarge

This PG code shows how to


Templates by Subject Area

PG problem file Explanation

Problem tagging data

Problem tagging:

DOCUMENT();

loadMacros(
  'PGstandard.pl',
  'MathObjects.pl',
  'PGML.pl',
  'PGcourse.pl'
);

TEXT(beginproblem()); 

Initialization:

Context('Numeric');

$sol_str = '(x-2)*(x+1)';

$ans = Compute($sol_str)->cmp(checker => sub {
    my ( $correct, $student, $self ) = @_;
    my $context = Context()->copy;
    return 0 if $student == 0;
    $context->flags->set(no_parameters=>0);
    $context->variables->add('C0'=>'Parameter');
    my $c0 = Formula($context,'C0');
    $student = Formula($context,$student);
    $correct = Formula($context,"$c0 * $sol_str");
    return $correct == $student;
  });

Setup:

We use a local context with an adaptive parameter to check the answer. For more on adaptive parameters, see AdaptiveParameters. This builds a custom checker that checks if the student answer is a parameter C0 multiple of the correct answer in $sol_str.

BEGIN_PGML
Find a quadratic equation in terms of the variable
[` x `] with roots [` -1 `] and [` 2 `].

[` y = `] [______________]{$ans}

[@ helpLink('formulas') @]*
END_PGML

Main Text:

BEGIN_PGML_SOLUTION
Solution explanation goes here.
END_PGML_SOLUTION

ENDDOCUMENT();

Solution:

Templates by Subject Area