跳至內容
Astera Technology

評分前先攔截重複個案鍵

評分前數每個候選鍵次數,不能讓後筆正確答案覆寫前筆。

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

訂明本例驗收任務

假設候選接收記錄編號須為非全空白文字,原樣比較,核對前保留每次出現。欠編號或不是文字便暫停;空批次在此接收關卡仍有效。先數全部次數,才可轉成對照表。即使後一筆正確,重複仍拒整批;也未批准首筆優先。列重複編號及次數。

  1. 保留每次候選出現
  2. 轉對照表前先數次數
  3. 列重複鍵及次數並拒絕

重複鍵須另提供嘗試編號或修檔案。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
後正確答案會覆寫前筆{"rows":[{"id":"C1","answer":"wrong"},{"id":"C1","answer":"correct"}]}{"duplicates":[{"id":"C1","count":2}],"accepted":false}兩次都是依據,評分前不得互相取代。
兩個不同個案{"rows":[{"id":"C1","answer":"wrong"},{"id":"C2","answer":"correct"}]}{"duplicates":[],"accepted":true}鍵不重複可接收;C1 錯答案仍待內容評分。
候選欠有效個案鍵{"rows":[{}]}{"error":"case-identity"}欠鍵不能當作一個不同候選編號接受。
兩個編號各自重複{"rows":[{"id":"B"},{"id":"A"},{"id":"B"},{"id":"A"},{"id":"A"}]}{"duplicates":[{"id":"A","count":3},{"id":"B","count":2}],"accepted":false}A 三次、B 兩次各自保留,不只報一個重複總數。
下載可編輯 CSV ↓

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

查看參考答案

{"duplicates":[{"id":"A","count":3},{"id":"B","count":2}],"accepted":false}。A 三次、B 兩次各自保留,不只報一個重複總數。

執行完整本機驗算

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

function evaluate(x){
 if(x.rows.some(row=>typeof row.id!=='string'||!row.id.trim()))return {error:'case-identity'};
 const counts=new Map();for(const row of x.rows)counts.set(row.id,(counts.get(row.id)||0)+1);
 const duplicates=[...counts].filter(([,n])=>n>1).sort(([a],[b])=>a<b?-1:a>b?1:0).map(([id,count])=>({id,count}));return {duplicates,accepted:duplicates.length===0};
}

const cases = [
  {
    "id": "late-correct-overwrite",
    "input": {
      "rows": [
        {
          "id": "C1",
          "answer": "wrong"
        },
        {
          "id": "C1",
          "answer": "correct"
        }
      ]
    },
    "expected": {
      "duplicates": [
        {
          "id": "C1",
          "count": 2
        }
      ],
      "accepted": false
    }
  },
  {
    "id": "two-unique-cases",
    "input": {
      "rows": [
        {
          "id": "C1",
          "answer": "wrong"
        },
        {
          "id": "C2",
          "answer": "correct"
        }
      ]
    },
    "expected": {
      "duplicates": [],
      "accepted": true
    }
  },
  {
    "id": "case-key-absent",
    "input": {
      "rows": [
        {}
      ]
    },
    "expected": {
      "error": "case-identity"
    }
  },
  {
    "id": "multiple-duplicates",
    "input": {
      "rows": [
        {
          "id": "B"
        },
        {
          "id": "A"
        },
        {
          "id": "B"
        },
        {
          "id": "A"
        },
        {
          "id": "A"
        }
      ]
    },
    "expected": {
      "duplicates": [
        {
          "id": "A",
          "count": 3
        },
        {
          "id": "B",
          "count": 2
        }
      ],
      "accepted": false
    }
  }
];
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)}));
下載可執行例子 ↓

未改的出現記錄留給同事覆核。此檢查只管接收編號,沒有選較有利答案或報模型準確度。

相關資源