# [LON-CAPA-users] Preprocessor vs. Custom Response

Gerd Kortemeyer kortemey at msu.edu
Fri Dec 4 15:32:10 EST 2015

```Hi,

> On Dec 4, 2015, at 2:41 PM, Jacob Bond <bond13 at purdue.edu> wrote:
>>
>> Are you actually looking for the fraction to be reduced? Because we can check that very generally.
>>
>
> Yes, that is the main idea.

Okay, then I would use Maxima to figure out if the reduced fraction is equal to the fraction input by the student, see below.

- Gerd.

<problem>
<script type="loncapa/perl">
\$a=&random(20,100,4);
\$b=\$a+&random(40,140,4);
\$numerical=\$a/\$b;
\$reduced=&cas('maxima',"\$a/\$b")
</script>

<startouttext />
Input \$a/\$b as a reduced fraction.
<endouttext />

<answer type="loncapa/perl"># Split nominator and denominator
(\$nominator,\$denominator)=split(/\//,\$submission);
# Do we have a nominator? If not, be nice and don't charge a try
unless (\$nominator) { return 'BAD_FORMULA'; }
# Is it valid? If not, don't charge a try
\$nominator=&cas("maxima",\$nominator);
if (\$nominator=~/^Error/i) { return 'BAD_FORMULA'; }
# If students just input a number, there would be no denominator
unless (\$denominator) {
# Check for exact numerical equivalency:
if (\$nominator==\$numerical) { return 'EXACT_ANS'; }
} else {
# There is a denominator
# Again, be nice and don't charge a try for syntax errors
\$denominator=&cas("maxima",\$denominator);
if (\$denominator=~/^Error/i) { return 'BAD_FORMULA'; }
# Okay, let's compare the fractions as strings
if ("\$nominator/\$denominator" eq \$reduced) { return 'EXACT_ANS'; }
}
# Nope, sorry.