跳至內容
Astera Technology

爭議標籤未釐清前不要自動評候選

爭議答案鍵先待判,只按有效已同意鍵評候選。

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

訂明本例驗收任務

假設答案鍵覆核把題目列 agreed 或 disputed。只有 agreed 且預期為布林才可比候選布林;disputed 不論候選如何都保留待判。已評與待判分開,已同意題的標籤若無效也另列無效,不選首位同事。

  1. 先讀標籤判定狀態
  2. 只評有效已同意標籤
  3. 爭議及無效題分開保留

待判鍵須記錄判定,本例沒有多數或首標籤優先。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
一題標籤有分歧{"cases":[{"id":"C1","state":"agreed","expected":true,"answer":true},{"id":"C2","state":"disputed","expected":null,"answer":true}]}{"scored":[{"id":"C1","pass":true}],"held":["C2"],"invalid":[]}只評 C1,C2 不入通過分母。
鍵已同意,候選不符{"cases":[{"id":"C1","state":"agreed","expected":false,"answer":true}]}{"scored":[{"id":"C1","pass":false}],"held":[],"invalid":[]}候選與已同意布林鍵不符。
已同意卻鍵格式錯{"cases":[{"id":"C3","state":"agreed","expected":"pass","answer":true}]}{"scored":[],"held":[],"invalid":["C3"]}布林準則不能拿字串鍵評。
下載可編輯 CSV ↓

逐步處理 invalid-agreed-key 個案,須得到甚麼結果?原因是甚麼?

查看參考答案

{"scored":[],"held":[],"invalid":["C3"]}。布林準則不能拿字串鍵評。

執行完整本機驗算

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

function evaluate(x){
 const scored=[],held=[],invalid=[];for(const c of x.cases){if(c.state==='disputed')held.push(c.id);else if(c.state!=='agreed'||typeof c.expected!=='boolean'||typeof c.answer!=='boolean')invalid.push(c.id);else scored.push({id:c.id,pass:c.answer===c.expected});}
 return {scored,held,invalid};
}

const cases = [
  {
    "id": "one-held-label",
    "input": {
      "cases": [
        {
          "id": "C1",
          "state": "agreed",
          "expected": true,
          "answer": true
        },
        {
          "id": "C2",
          "state": "disputed",
          "expected": null,
          "answer": true
        }
      ]
    },
    "expected": {
      "scored": [
        {
          "id": "C1",
          "pass": true
        }
      ],
      "held": [
        "C2"
      ],
      "invalid": []
    }
  },
  {
    "id": "agreed-candidate-fail",
    "input": {
      "cases": [
        {
          "id": "C1",
          "state": "agreed",
          "expected": false,
          "answer": true
        }
      ]
    },
    "expected": {
      "scored": [
        {
          "id": "C1",
          "pass": false
        }
      ],
      "held": [],
      "invalid": []
    }
  },
  {
    "id": "invalid-agreed-key",
    "input": {
      "cases": [
        {
          "id": "C3",
          "state": "agreed",
          "expected": "pass",
          "answer": true
        }
      ]
    },
    "expected": {
      "scored": [],
      "held": [],
      "invalid": [
        "C3"
      ]
    }
  }
];
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)}));
下載可執行例子 ↓

答案鍵有爭議也保留候選輸出。少評題會改覆蓋,已評小組全通過不能當完整驗收。

相關資源