"HeldExpression" (Comparison Method)

式を評価せずに比較する.

詳細

  • "HeldExpression"比較法は,2つの式が任意のホールドラッパー内で同一なら両者が等価であるとみなす.
  • 解答集の値と提出された答の両方が,HoldHoldPatternHoldComplete等のホールドラッパーに包まれて与えられることが多い.
  • パターン付きの解答集の値は,標準的なパターンマッチングをサポートするために,HoldPattern[expr]を使って与えられなければならない.HoldCompleteあるいはHoldの使用にはパターン式のリテラルなマッチングが必要である.

例題

すべて開くすべて閉じる

  (2)

未評価の式用のAssessmentFunctionを作成する:

提出された答は厳密にマッチしなければならない:

評価結果は正答とはされない:

未評価の数式用のAssessmentFunctionを作成する:

提出された答は同一でなければならない:

同一ではないが数学的に等価な提出物は不正解とみなされる:

スコープ  (1)

コード問題に対する評価関数を作成する:

QuestionObjectでこれを使う:

正答を与える:

出力を提出しても不正解とされる:

特性と関係  (4)

Holdを使った評価関数は,パターンを文字通りに扱う:

パターンに一致する提出物は,不正解とされる:

厳密でリテラルなマッチは正解とされる:

代りにHoldPatternを使ってパターンマッチをサポートする:

一致するホールドされた式は正解とみなされる:

評価結果は受け入れられない:

"Expression"比較法は,存在する場合はホールドラッパーを含めて式全体を比較する:

ホールドラッパーが異なると正答とはされないかもしれない:

"HeldExpression"を使ってホールドラッパー内の式を比較する:

同じ答は正答とされる:

ホールドされた数式用の評価を作成する:

同じ答を"ArithmeticResult"として扱う別の評価を作成する:

"HeldExpression"は,加算における項の並べ替えのような基本的等価性も許容しないが,"ArithmeticResult"はこれを許容する:

ホールドされたコードの式用の評価を作成する:

同じ答を"CodeEquivalence"解として扱う別の評価を作成する:

"HeldExpression"は同一ではない答の等価性を求めようとしないが,"CodeEquivalence"は求めようとする:

考えられる問題  (1)

QuestionObjectは,Holdラッパーに包み込まれて与えられた場合でも,値のフォーマットを許容する:

DisableFormattingを使ってQuestionObjectのフォーマットを回避する: