$context = Context("Numeric"); # # Remove everything by addition and commas # from the context # Parser::Number::NoDecimals(); $context->variables->clear(); $context->strings->clear(); $context->constants->clear(); $context->functions->disable("all"); $context->operators->undefine($context->operators->names); $context->operators->redefine(["fn",",","+"]); $context->operators->remove(" "); # # Keep student answers unevaluated # $context->flags->set( reduceConstants => 0, formatStudentAnswer => 'parsed', ); BEGIN_TEXT Enter a partition: \{ans_rule\} END_TEXT # # Turn a tree of addition into an array # (should really check that numbers are # positive, since zero could appear here). # sub getTerms { my $bop = shift; return $bop->{value} if $bop->class eq "Number"; Value->Error("Formula doesn't appear to be a partition") unless $bop->class eq "BOP" && $bop->{bop} eq "+"; return (getTerms($bop->{lop}),getTerms($bop->{rop})); } # # Use a custom checker that collects the numbers # from the partitions and compares the sorted results. # ANS(Compute("1 + 3 + 5")->cmp( cmp_class => "a Partition", checker => sub { my ($correct,$student,$ans) = @_; my $S = join('+',num_sort(getTerms($ans->{student_formula}{tree}))); my $C = join('+',num_sort(getTerms($correct->{original_formula}{tree}))); return $C eq $S; } ));Hope that helps clarify things.

## WeBWorK Problems

### Partition of integers

This forum has a limit to the number of forum postings you can make in a given time period - this is currently set at 10 posting(s) in 1 day