跳至內容
Astera Technology

找出草稿擅自重排來源次序

成員及原次序分開評,擅自排序不能靠成員齊備通過。

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

訂明本例驗收任務

假設摘取要求是按來源原次序列不同編號。成員與次序分開核對;擅自重排可能齊成員卻次序失敗。來源或候選編號重複都不符合此清單要求;不自動排序後才接受。

  1. 核對編號不重複要求
  2. 成員另行比對
  3. 不排序,直接比原位置

重複編號須用可分辨每次出現的資料集,不適用此規則。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
未要求卻排序{"source":["C","A","B"],"answer":["A","B","C"]}{"membership":true,"order":false}全部編號仍在,卻漏了指定 C、A、B 原次序。
保留來源次序{"source":["C","A","B"],"answer":["C","A","B"]}{"membership":true,"order":true}成員及位置都相同。
答案重複一個編號{"source":["C","A","B"],"answer":["C","A","A","B"]}{"error":"duplicate-id"}先拒絕重複 A,不進入次序評分;排序也不能修。
下載可編輯 CSV ↓

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

查看參考答案

{"error":"duplicate-id"}。先拒絕重複 A,不進入次序評分;排序也不能修。

執行完整本機驗算

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

function evaluate(x){
 if(new Set(x.source).size!==x.source.length||new Set(x.answer).size!==x.answer.length)return {error:'duplicate-id'};
 const membership=x.source.length===x.answer.length&&x.source.every(id=>x.answer.includes(id));
 return {membership,order:membership&&x.source.every((id,i)=>x.answer[i]===id)};
}

const cases = [
  {
    "id": "unrequested-sort",
    "input": {
      "source": [
        "C",
        "A",
        "B"
      ],
      "answer": [
        "A",
        "B",
        "C"
      ]
    },
    "expected": {
      "membership": true,
      "order": false
    }
  },
  {
    "id": "source-order-retained",
    "input": {
      "source": [
        "C",
        "A",
        "B"
      ],
      "answer": [
        "C",
        "A",
        "B"
      ]
    },
    "expected": {
      "membership": true,
      "order": true
    }
  },
  {
    "id": "duplicate-answer",
    "input": {
      "source": [
        "C",
        "A",
        "B"
      ],
      "answer": [
        "C",
        "A",
        "A",
        "B"
      ]
    },
    "expected": {
      "error": "duplicate-id"
    }
  }
];
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)}));
下載可執行例子 ↓

答案鍵保留來源次序。即使字母排序較整齊,也須保留指定順序;成員通過不能寫成次序也通過。

相關資源