"CodeEquivalence" (Comparison Method)

2つのコードが変換後に等価であるかどうかを判定する.

詳細

  • "CodeEquivalence"法は,式を正規表現に変換することによって意図的等価性を判断しようとする.
  • 変換によって等価性が判定できる場合は,評価は行われず,比較は式の出力には基づかない.このため,非決定論的出力(ランダムな値,日付等)を生成するコードの比較が可能になる.
  • "CodeEquivalence"法は,CodeEquivalenceUtilitiesパクレットに直接基づいている.
  • "CodeEquivalence"は,数式についてはSimplify関数を使って等価性を判定する.より制御したければ,""ArithmeticResult""CalculusResult""PolynomialResult""AlgebraicValue"の特定の数学メソッドを使うとよい.

例題

すべて開くすべて閉じる

  (1)

コーディングの質問に対するAssessmentFunctionを作成する:

これを使って等価なコードを評価する:

スコープ  (1)

"CodeEquivalence"法は,ランダムな出力を生成するコードの比較をサポートする:

範囲を大きくした乱数の同等のコードと比較する:

次のコードは違う.各数が同じ範囲になっている:

アプリケーション  (2)

コーディング問題用のQuestionObjectを作成する:

コーディング問題のQuestionObjectを作成する:

古典的なコーディング課題を作成する:

特性と関係  (2)

シンボル名は厳密に一致しなくてもよい.未定義のシンボル名は,それ以外の一意的な未定義のシンボルとマッチする:

"CodeEquivalence"法で数式が比較できる:

"CalculusResult"のような数学専用のメソッドでも等価性が求められる:

コードの等価性は式をコードとして扱う,シンボル名は任意で個別のシンボルも等しいものとみなされる:

数学的比較法はシンボル名の一致を求める:

考えられる問題  (1)

評価すると決定論的出力となる答はその出力と等しいとみなされる:

これが望ましくない場合は,決定論的な出力を持たない解答集を使うとよい: