訂判斷及所需輸入
本例五位假設代碼,尾位是首四位合計除十的餘數。12345 格式雖齊,檢查碼應0,未查清單已要停。這是題內格式,不是行業條碼規格。
| 情況 | 輸入 JSON |
|---|---|
| 原例測試 | {"frame":"12345","catalogue":["12340"]} |
跑所附比較
程序真正核碼,亦記有沒有查清單。核碼有效只代表可進下一步,不能確立貨品身分。
| 路徑 | 輸出 JSON |
|---|---|
| 錯誤路徑 | {"checksumValid":true,"catalogueLookedUp":true,"held":false,"found":false} |
| 所需路徑 | {"checksumValid":false,"catalogueLookedUp":false,"held":true,"reason":"check-digit"} |
import assert from 'node:assert/strict';
const run=function run(i,corrected=true){
if(!/^\d{5}$/.test(i.frame))return {held:true,reason:'frame-grammar'};
const valid=([...i.frame.slice(0,4)].reduce((s,c)=>s+Number(c),0)%10)===Number(i.frame[4]);
if(corrected&&!valid)return {checksumValid:false,catalogueLookedUp:false,held:true,reason:'check-digit'};
const found=i.catalogue.includes(i.frame);return {checksumValid:corrected?valid:true,catalogueLookedUp:true,held:corrected?!found:false,found};
};
const cases=[{"input":{"frame":"12345","catalogue":["12340"]},"corrected":false,"expected":{"checksumValid":true,"catalogueLookedUp":true,"held":false,"found":false}},{"input":{"frame":"12345","catalogue":["12340"]},"corrected":true,"expected":{"checksumValid":false,"catalogueLookedUp":false,"held":true,"reason":"check-digit"}},{"input":{"frame":"12340","catalogue":["12340"]},"corrected":true,"expected":{"checksumValid":true,"catalogueLookedUp":true,"held":false,"found":true}},{"input":{"frame":"22228","catalogue":["12340"]},"corrected":true,"expected":{"checksumValid":true,"catalogueLookedUp":true,"held":true,"found":false}}];
for(const test of cases){const actual=await run(test.input,test.corrected);assert.deepEqual(actual,test.expected);console.log(actual);}
按邊界依據作判斷
12340 核碼過且清單有;22228 核碼過但所附清單沒有,仍要停。
- 核五位格式
- 計題內檢查碼
- 過了才查清單
假設規則不能確認真實識別標準。
| 條件 | 輸入 JSON | 預期輸出 JSON |
|---|---|---|
| 題內代碼核對成功 | {"frame":"12340","catalogue":["12340"]} | {"checksumValid":true,"catalogueLookedUp":true,"held":false,"found":true} |
| 核碼有效但清單沒有 | {"frame":"22228","catalogue":["12340"]} | {"checksumValid":true,"catalogueLookedUp":true,"held":true,"found":false} |
原例12345 應標清單沒有的貨品嗎?
查看參考答案
未到這一步。檢查碼不符,清單尚未查;先保這項確切失敗。