跳至內容
Astera Technology

評分器只按指定絕對誤差核對

用同單位原整數刻度核絕對誤差,不先取整或改用比例。

下載完整個案資料及參考答案 ↓

訂明本例驗收任務

假設數值答案以百分之一小時的非負安全整數刻度提供,絕對誤差上限也用同單位且不得為負。上下界恰好相等都通過;先用原刻度比,不用顯示取整或百分比誤差。本單位是此資料集自訂。

  1. 核整數單位及誤差上限
  2. 按原刻度計有正負差額
  3. 以絕對值核包括邊界上限

刻度或上限無效,先停評,不判通過或失敗。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
恰好下界{"expectedTicks":1000,"answerTicks":990,"toleranceTicks":10}{"deviationTicks":-10,"pass":true}9.90 小時比 10.00 少 0.10,恰好界內。
超過上界{"expectedTicks":1000,"answerTicks":1011,"toleranceTicks":10}{"deviationTicks":11,"pass":false}10.11 超出 0.10 誤差;不能改顯示取整再評。
誤差上限為負{"expectedTicks":1000,"answerTicks":1000,"toleranceTicks":-1}{"error":"tick-contract"}負上限是驗算定義無效,不是候選答錯。
下載可編輯 CSV ↓

逐步處理 negative-tolerance 個案,須得到甚麼結果?原因是甚麼?

查看參考答案

{"error":"tick-contract"}。負上限是驗算定義無效,不是候選答錯。

執行完整本機驗算

另存為 .mjs,以 Node.js 執行;只驗提供的個案
import assert from 'node:assert/strict';

function evaluate(x){
 if(![x.expectedTicks,x.answerTicks,x.toleranceTicks].every(Number.isSafeInteger)||x.expectedTicks<0||x.answerTicks<0||x.toleranceTicks<0)return {error:'tick-contract'};
 const deviation=x.answerTicks-x.expectedTicks;return {deviationTicks:deviation,pass:Math.abs(deviation)<=x.toleranceTicks};
}

const cases = [
  {
    "id": "lower-edge",
    "input": {
      "expectedTicks": 1000,
      "answerTicks": 990,
      "toleranceTicks": 10
    },
    "expected": {
      "deviationTicks": -10,
      "pass": true
    }
  },
  {
    "id": "beyond-upper",
    "input": {
      "expectedTicks": 1000,
      "answerTicks": 1011,
      "toleranceTicks": 10
    },
    "expected": {
      "deviationTicks": 11,
      "pass": false
    }
  },
  {
    "id": "negative-tolerance",
    "input": {
      "expectedTicks": 1000,
      "answerTicks": 1000,
      "toleranceTicks": -1
    },
    "expected": {
      "error": "tick-contract"
    }
  }
];
for (const c of cases) assert.deepEqual(evaluate(c.input), c.expected, c.id);
console.log(JSON.stringify({checked:cases.length,caseIds:cases.map(c=>c.id)}));
下載可執行例子 ↓

預期刻度、候選刻度及誤差上限一起保存。上限由驗收要求提供;程式不證明上限合理,也不推斷測量準確度。

相關資源