Function Repository Resource:

AssessmentFunctionComparisonTable

Source Notebook

Create summary tables to examine the comparison methods in AssessmentFunction

Contributed by: Bob Sandheinrich and Christophe Pakleza

ResourceFunction["AssessmentFunctionComparisonTable"][answerkey,{ans1,},{compmeth1,compmeth2,}]

creates a summary table showing the whether each of the ansi would be considered correct answers in AssessmentFunction for each of the specified comparison methods.

Details and Options

ResourceFunction["AssessmentFunctionComparisonTable"] only shows results based on default settings and options for each comparison method. Tolerance and other settings are not supported.
The compmethi accepts any value supported as the second argument of AssessmentFunction include named methods and associations with custom settings.
Named methods are listed on the Assessment Comparison Method guide page.

Examples

Basic Examples (4) 

Compare "ArithmeticResult" and "PolynomialResult" comparison methods when distribution is performed:

In[1]:=
ResourceFunction[
 "AssessmentFunctionComparisonTable", ResourceSystemBase -> "https://www.wolframcloud.com/objects/resourcesystem/api/1.0"][
 Hold[(5 x + 5)], {Hold[5 (x + 1)]}, {"ArithmeticResult", "PolynomialResult"}]
Out[1]=

Compare "CodeEquivalence" with "HeldExpression " for a coding problem:

In[2]:=
ResourceFunction[
 "AssessmentFunctionComparisonTable", ResourceSystemBase -> "https://www.wolframcloud.com/objects/resourcesystem/api/1.0"][
 HoldPattern[Table[f[i], {i, n}]], {Hold[Table[f[i], {i, n}]], Hold[f /@ Table[i, {i, n}]]}, {"HeldExpression", "CodeEquivalence"}]
Out[2]=

Compare "ArithmeticResult" and "CalculusResult" when addition is performed:

In[3]:=
ResourceFunction[
 "AssessmentFunctionComparisonTable", ResourceSystemBase -> "https://www.wolframcloud.com/objects/resourcesystem/api/1.0"][
 Hold[1 + 2], {Hold[2 + 1], Hold[3]}, {"ArithmeticResult", "CalculusResult"}]
Out[3]=

Compare "AlgebraicForm" and "ExponentiationResult" when square roots are is distributed:

In[4]:=
ResourceFunction[
 "AssessmentFunctionComparisonTable", ResourceSystemBase -> "https://www.wolframcloud.com/objects/resourcesystem/api/1.0"][
 Hold[x*Sqrt[2] + 2], {Sqrt[2] (x + Sqrt[2]), x*Sqrt[2] + Sqrt[2]*Sqrt[2]}, {"AlgebraicForm", "ExponentiationResult"}]
Out[4]=

Scope (4) 

Compare several methods and possible answers for algebraic expressions:

In[5]:=
ResourceFunction[
 "AssessmentFunctionComparisonTable", ResourceSystemBase -> "https://www.wolframcloud.com/objects/resourcesystem/api/1.0"][
 Hold[2 x + 8], {Hold[8 + 2 x], Hold[2 (x + 4)], Hold[3 + 5 + 2*x], Hold[3 + 5 + x + x], Hold[Sqrt[2] (Sqrt[2] x + 4 Sqrt[2])], Hold[Sqrt[2]*Sqrt[2] x + 2*4]}, {"HeldExpression", "ArithmeticResult", "PolynomialResult", "AlgebraicForm", "CalculusResult"}]
Out[5]=

Compare two mathematical comparison methods, with "HeldExpression" which is not math based:

In[6]:=
ResourceFunction[
 "AssessmentFunctionComparisonTable", ResourceSystemBase -> "https://www.wolframcloud.com/objects/resourcesystem/api/1.0"][
 HoldPattern[1 - Cos[x]^2], {Hold[1 - Cos[x]^2], Hold[Sin[x]^2], Hold[Sin[y]^2]}, {"HeldExpression", "CalculusResult", "CodeEquivalence"}]
Out[6]=

Add a customization. The customized method is annotated with a * in the table. Hover over the method to see the full specification:

In[7]:=
ResourceFunction[
 "AssessmentFunctionComparisonTable", ResourceSystemBase -> "https://www.wolframcloud.com/objects/resourcesystem/api/1.0"]["dog", {"Dog", "dog", "dawg"}, {"String", <|"ComparisonMethod" -> "String", IgnoreCase -> True|>}]
Out[7]=

Use a custom comparator function:

In[8]:=
ResourceFunction[
 "AssessmentFunctionComparisonTable", ResourceSystemBase -> "https://www.wolframcloud.com/objects/resourcesystem/api/1.0"]["dog", {"Dog", "dog", "cat", "dawg"}, {"String", <|"ComparisonMethod" -> "String", IgnoreCase -> True|>, <|
   "Comparator" -> Function[AllSameBy[{#1, #2}, StringLength]]|>}]
Out[8]=

Properties and Relations (2) 

"Expression" supports patterns including Blank:

In[9]:=
ResourceFunction[
 "AssessmentFunctionComparisonTable", ResourceSystemBase -> "https://www.wolframcloud.com/objects/resourcesystem/api/1.0"][
 HoldPattern[f[_]], {f[1], g[y], f[z]}, {"Expression", "CodeEquivalence"}]
Out[9]=

"CodeEquivalence" treats undefined global symbols as equivalent:

In[10]:=
ResourceFunction[
 "AssessmentFunctionComparisonTable", ResourceSystemBase -> "https://www.wolframcloud.com/objects/resourcesystem/api/1.0"][
 HoldPattern[f[x]], {f[1], g[y], f[z]}, {"Expression", "CodeEquivalence"}]
Out[10]=

Use a "Quantity" comparison for physical quantities. The default Tolerance of zero is applied:

In[11]:=
ResourceFunction[
 "AssessmentFunctionComparisonTable", ResourceSystemBase -> "https://www.wolframcloud.com/objects/resourcesystem/api/1.0"][
 Quantity[1200, "Grams"], {Quantity[6/5, "Kilograms"], Quantity[1.2, "Kilograms"], Quantity[1.20001, "Kilograms"], N@UnitConvert[Quantity[1200, "Grams"], "Pounds"]}, {"Quantity", "Expression"}]
Out[11]=

Requirements

Wolfram Language 14.0 (January 2024) or above

Version History

  • 1.0.0 – 17 October 2025

Related Resources

Author Notes

In a future update, we hope to support AssessmentFunction options like Tolerance and DistanceFunction

License Information