訂判斷及所需輸入
本例從已訂起點計,期限第六十分鐘;工作第五十九開始、第六十四完成。六十前開始符合,六十前完成卻不符。採購要求是後者,不能只憑早開始就算合適。
| 情況 | 輸入 JSON |
|---|---|
| 原例測試 | {"start":59,"finish":64,"deadline":60} |
跑所附比較
本地程序真正判兩個事件,各保自己的意思;時間是題內假設觀察,不是供應商實測保證。
| 路徑 | 輸出 JSON |
|---|---|
| 錯誤路徑 | {"startFits":true,"finishFits":false,"requirementSatisfied":true} |
| 所需路徑 | {"startFits":true,"finishFits":false,"requirementSatisfied":false} |
import assert from 'node:assert/strict';
const run=function run(i,corrected=true){
if(i.start===null||i.finish===null||i.deadline===null)return {held:true};
const startFits=i.start<=i.deadline,finishFits=i.finish<=i.deadline;
return {startFits,finishFits,requirementSatisfied:corrected?finishFits:startFits};
};
const cases=[{"input":{"start":59,"finish":64,"deadline":60},"corrected":false,"expected":{"startFits":true,"finishFits":false,"requirementSatisfied":true}},{"input":{"start":59,"finish":64,"deadline":60},"corrected":true,"expected":{"startFits":true,"finishFits":false,"requirementSatisfied":false}},{"input":{"start":59,"finish":60,"deadline":60},"corrected":true,"expected":{"startFits":true,"finishFits":true,"requirementSatisfied":true}},{"input":{"start":59,"finish":null,"deadline":60},"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 |
|---|---|---|
| 剛好期限完成 | {"start":59,"finish":60,"deadline":60} | {"startFits":true,"finishFits":true,"requirementSatisfied":true} |
| 尚未有完成觀察 | {"start":59,"finish":null,"deadline":60} | {"held":true} |
原例符合所需完成期限嗎?
查看參考答案
不符合。五十九開始雖及時,六十四完成已超六十;須記所需完成事件。