跳至內容
Astera Technology

倒轉候選次序後比較評分

倒轉呈現次序仍按相同候選編號比評分,不推斷心理原因。

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

訂明本例驗收任務

假設同事評分核對把相同候選與個案在兩回合倒轉呈現次序。按固定候選編號配對布林結果,不按位置;兩回合須同一組編號各一筆。標籤改了列覆核觀察不一致,不推斷心理原因。

  1. 兩回合按相同候選編號配
  2. 配對時不用呈現位置
  3. 列改標籤給同事覆核

候選欠配或重複,配對核對無效。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
一個評分變了{"first":[{"id":"A","pass":true},{"id":"B","pass":false}],"second":[{"id":"B","pass":false},{"id":"A","pass":false}]}{"changed":["A"]}A 由通過變失敗,B 一直失敗。
只改顯示次序{"first":[{"id":"A","pass":true},{"id":"B","pass":false}],"second":[{"id":"B","pass":false},{"id":"A","pass":true}]}{"changed":[]}用固定編號可見沒有改評,即使位置倒轉。
第二回合欠候選{"first":[{"id":"A","pass":true},{"id":"B","pass":false}],"second":[{"id":"A","pass":true}]}{"error":"matched-review-input"}欠 B,不能做同候選的次序核對。
下載可編輯 CSV ↓

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

查看參考答案

{"error":"matched-review-input"}。欠 B,不能做同候選的次序核對。

執行完整本機驗算

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

function evaluate(x){
 const ids=x.first.map(r=>r.id).sort(),secondIds=x.second.map(r=>r.id).sort();if(new Set(ids).size!==ids.length||new Set(secondIds).size!==secondIds.length||JSON.stringify(ids)!==JSON.stringify(secondIds)||[...x.first,...x.second].some(r=>typeof r.pass!=='boolean'))return {error:'matched-review-input'};
 return {changed:ids.filter(id=>x.first.find(r=>r.id===id).pass!==x.second.find(r=>r.id===id).pass)};
}

const cases = [
  {
    "id": "one-label-changes",
    "input": {
      "first": [
        {
          "id": "A",
          "pass": true
        },
        {
          "id": "B",
          "pass": false
        }
      ],
      "second": [
        {
          "id": "B",
          "pass": false
        },
        {
          "id": "A",
          "pass": false
        }
      ]
    },
    "expected": {
      "changed": [
        "A"
      ]
    }
  },
  {
    "id": "order-only-change",
    "input": {
      "first": [
        {
          "id": "A",
          "pass": true
        },
        {
          "id": "B",
          "pass": false
        }
      ],
      "second": [
        {
          "id": "B",
          "pass": false
        },
        {
          "id": "A",
          "pass": true
        }
      ]
    },
    "expected": {
      "changed": []
    }
  },
  {
    "id": "unmatched-candidate",
    "input": {
      "first": [
        {
          "id": "A",
          "pass": true
        },
        {
          "id": "B",
          "pass": false
        }
      ],
      "second": [
        {
          "id": "A",
          "pass": true
        }
      ]
    },
    "expected": {
      "error": "matched-review-input"
    }
  }
];
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)}));
下載可執行例子 ↓

保留兩次呈現次序及配對標籤。改評值得查準則,但假設觀察未證明是呈現次序導致。

相關資源