# Difference between revisions of "AnswerUpToMultiplication1"

## Answer is a Function up to Multiplication by a Nonzero Constant

This PG code shows how to

PG problem file Explanation

Problem tagging:

```DOCUMENT();

"PGstandard.pl",
"MathObjects.pl",
);

TEXT(beginproblem());
```

Initialization:

```Context("Numeric");

\$aSolution = Compute("(x-2)(x+1)");
```

Setup:

```Context()->texStrings;
BEGIN_TEXT
Find a quadratic equation in terms of the variable
\( x \) with roots \( -1 \) and \( 2 \).
\$BR
\$BR
\( y = \) \{ ans_rule(20) \}
END_TEXT
Context()->normalStrings;
```

Main Text:

```\$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);
my \$c0 = Formula(\$context,'C0');
\$student = Formula(\$context,\$student);
\$correct = Formula(\$context,"\$c0 * \$aSolution");
return \$correct == \$student;
}
) );
```

Answer Evaluation: We use a local context with an adaptive parameter to check the answer. For more on adaptive parameters, see AdaptiveParameters When `\$aSolution` is "complicated", you may need to replace `\$c0 * \$aSolution` in the custom answer checker by its value `\$c0 * (x-2)(x+1)` in order to get things to work correctly.

```Context()->texStrings;
BEGIN_SOLUTION
\${PAR}SOLUTION:\${PAR}
Solution explanation goes here.
END_SOLUTION
Context()->normalStrings;

COMMENT('MathObject version.');

ENDDOCUMENT();
```

Solution: