跳至內容
Astera Technology

逐個案列出重複作答的一致程度

分曾通過、每次通過及不一致題,保留同版全部嘗試。

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

訂明本例驗收任務

假設觀察清單用布林標籤記同一版本每題的重複嘗試,每個不同非空文字個案編號只可一組,且最少一次;重複組先拒絕,不進一致度計數。分開數曾通過、每次通過及不一致編號;每次都失敗不屬不一致。標籤是本例假設,並非模型實測。

  1. 核每題最少一次布林結果
  2. 分開曾通過及全部通過
  3. 列混合結果個案

欠嘗試或不是布林標籤,先修記錄。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
一題結果不一致{"cases":[{"id":"C1","passes":[true,true,true]},{"id":"C2","passes":[false,true,false]}]}{"cases":2,"everPass":2,"alwaysPass":1,"unstable":["C2"]}兩題都曾通過,只有 C1 每次通過。
每次都失敗{"cases":[{"id":"C3","passes":[false,false]}]}{"cases":1,"everPass":0,"alwaysPass":0,"unstable":[]}C3 一直失敗,與混合結果分開。
同題拆成兩組{"cases":[{"id":"C1","passes":[true]},{"id":"C1","passes":[false]}]}{"error":"duplicate-case-id"}兩組不能藏起 C1 不一致,也不能當兩題數。
個案沒有嘗試{"cases":[{"id":"C4","passes":[]}]}{"error":"attempt-label"}沒有嘗試不能證明一直成功或失敗。
下載可編輯 CSV ↓

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

查看參考答案

{"error":"attempt-label"}。沒有嘗試不能證明一直成功或失敗。

執行完整本機驗算

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

function evaluate(x){
 if(x.cases.some(c=>typeof c.id!=='string'||!c.id.trim()))return {error:'case-id'};
 if(new Set(x.cases.map(c=>c.id)).size!==x.cases.length)return {error:'duplicate-case-id'};
 if(x.cases.some(c=>!c.passes.length||c.passes.some(p=>typeof p!=='boolean')))return {error:'attempt-label'};
 return {cases:x.cases.length,everPass:x.cases.filter(c=>c.passes.some(Boolean)).length,alwaysPass:x.cases.filter(c=>c.passes.every(Boolean)).length,unstable:x.cases.filter(c=>c.passes.some(Boolean)&&!c.passes.every(Boolean)).map(c=>c.id).sort()};
}

const cases = [
  {
    "id": "one-unstable-case",
    "input": {
      "cases": [
        {
          "id": "C1",
          "passes": [
            true,
            true,
            true
          ]
        },
        {
          "id": "C2",
          "passes": [
            false,
            true,
            false
          ]
        }
      ]
    },
    "expected": {
      "cases": 2,
      "everPass": 2,
      "alwaysPass": 1,
      "unstable": [
        "C2"
      ]
    }
  },
  {
    "id": "consistent-failure",
    "input": {
      "cases": [
        {
          "id": "C3",
          "passes": [
            false,
            false
          ]
        }
      ]
    },
    "expected": {
      "cases": 1,
      "everPass": 0,
      "alwaysPass": 0,
      "unstable": []
    }
  },
  {
    "id": "split-duplicate-groups",
    "input": {
      "cases": [
        {
          "id": "C1",
          "passes": [
            true
          ]
        },
        {
          "id": "C1",
          "passes": [
            false
          ]
        }
      ]
    },
    "expected": {
      "error": "duplicate-case-id"
    }
  },
  {
    "id": "unattempted-case",
    "input": {
      "cases": [
        {
          "id": "C4",
          "passes": []
        }
      ]
    },
    "expected": {
      "error": "attempt-label"
    }
  }
];
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)}));
下載可執行例子 ↓

各次嘗試連同固定版本編號保存。有限標籤只描述此例穩定性,不能推出模型普遍成功機率。

相關資源