Difference between revisions of "AnswerUpToMultiplication1"

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 64:
 
<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 72:
 
<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 84:
 
<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 105:
 
<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 06: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