訂判斷及所需輸入
題內共十次嘗試:七完成、兩拒絕、一未明。只算完成的配額用七;每次嘗試都算則用十,包括失敗及未明。重試在此也是嘗試,不等於另有完成結果。
| 情況 | 輸入 JSON |
|---|---|
| 原例測試 | {"event":"completed","results":["completed","completed","completed","completed","completed","completed","completed","rejected","rejected","unknown"]} |
跑所附比較
程序沿已訂事件計,未明觀察也另列。消耗數較少,不會把未明工作當成功,也不能推其他供應商如何收費。
| 路徑 | 輸出 JSON |
|---|---|
| 錯誤路徑 | {"event":"completed","units":10,"unknown":1} |
| 所需路徑 | {"event":"completed","units":7,"unknown":1} |
import assert from 'node:assert/strict';
const run=function run(i,corrected=true){
if(!['attempt','completed'].includes(i.event))return {held:true};
return {event:i.event,units:corrected&&i.event==='completed'?i.results.filter(r=>r==='completed').length:i.results.length,unknown:i.results.filter(r=>r==='unknown').length};
};
const cases=[{"input":{"event":"completed","results":["completed","completed","completed","completed","completed","completed","completed","rejected","rejected","unknown"]},"corrected":false,"expected":{"event":"completed","units":10,"unknown":1}},{"input":{"event":"completed","results":["completed","completed","completed","completed","completed","completed","completed","rejected","rejected","unknown"]},"corrected":true,"expected":{"event":"completed","units":7,"unknown":1}},{"input":{"event":"attempt","results":["completed","rejected","unknown"]},"corrected":true,"expected":{"event":"attempt","units":3,"unknown":1}},{"input":{"event":null,"results":[]},"corrected":true,"expected":{"held":true}}];
for(const test of cases){const actual=await run(test.input,test.corrected);assert.deepEqual(actual,test.expected);console.log(actual);}
按邊界依據作判斷
三次嘗試邊界按嘗試計三,仍留一項未明。缺消耗事件定義,不能完成計費比較。
- 核消耗配額的事件
- 計相符紀錄
- 未明結果另留
一次成功不能補上未訂事件定義。
| 條件 | 輸入 JSON | 預期輸出 JSON |
|---|---|---|
| 明訂每次嘗試都計 | {"event":"attempt","results":["completed","rejected","unknown"]} | {"event":"attempt","units":3,"unknown":1} |
| 消耗事件未訂 | {"event":null,"results":[]} | {"held":true} |
原例按完成次數計,消耗幾單位?
查看參考答案
七,另留一項未明。把十次全計,是套了嘗試規則。