訂明本例驗收任務
假設同事問題須用齊指定文件組合。只數找到的不同所需文件,其他結果及重複段落不加分;列出欠的編號及分子、分母。所需清單空白便列作未訂明,不能自行當通過。
- 先去除所需文件的重複編號
- 與提供的搜尋結果比對
- 列欠項及整組是否齊備
所需清單空白,先補訂答案組合。
使用已填個案
| 個案 | 已提供輸入 | 預期結構化結果 | 判斷及原因 |
|---|---|---|---|
| 欠獨立部分 | {"required":["D1","D2"],"hits":["D1","X","Y"]} | {"found":["D1"],"missing":["D2"],"numerator":1,"denominator":2,"complete":false} | D1 不能代替 D2;找到相關文件也未齊整組。 |
| 齊備但有重複結果 | {"required":["D1","D2"],"hits":["D2","D1","D1"]} | {"found":["D1","D2"],"missing":[],"numerator":2,"denominator":2,"complete":true} | 兩份所需文件都在;重複 D1 不改分母。 |
| 未訂所需組合 | {"required":[],"hits":["D1"]} | {"found":[],"missing":[],"numerator":0,"denominator":0,"complete":null} | 沒有訂所需組合,完整度未能判定;0/0 不算通過。 |
逐步處理 undeclared-bundle 個案,須得到甚麼結果?原因是甚麼?
查看參考答案
{"found":[],"missing":[],"numerator":0,"denominator":0,"complete":null}。沒有訂所需組合,完整度未能判定;0/0 不算通過。
執行完整本機驗算
import assert from 'node:assert/strict';
function evaluate(x){
const required=[...new Set(x.required)].sort(),hits=new Set(x.hits);
const found=required.filter(id=>hits.has(id)),missing=required.filter(id=>!hits.has(id));
return {found,missing,numerator:found.length,denominator:required.length,complete:required.length?missing.length===0:null};
}
const cases = [
{
"id": "missing-piece",
"input": {
"required": [
"D1",
"D2"
],
"hits": [
"D1",
"X",
"Y"
]
},
"expected": {
"found": [
"D1"
],
"missing": [
"D2"
],
"numerator": 1,
"denominator": 2,
"complete": false
}
},
{
"id": "duplicate-hit",
"input": {
"required": [
"D1",
"D2"
],
"hits": [
"D2",
"D1",
"D1"
]
},
"expected": {
"found": [
"D1",
"D2"
],
"missing": [],
"numerator": 2,
"denominator": 2,
"complete": true
}
},
{
"id": "undeclared-bundle",
"input": {
"required": [],
"hits": [
"D1"
]
},
"expected": {
"found": [],
"missing": [],
"numerator": 0,
"denominator": 0,
"complete": null
}
}
];
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)}));
每條同事問題保留所需組合與實際找到編號。此檢查只看提供的搜尋資料;沒有生成答案,也未判斷段落是否支持說法。