跳至內容
Astera Technology

設備讀數穩定後,連單位一起收

先核穩定訊息,才把讀數換統一單位。

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

訂判斷及所需輸入

本例格式限 U 或 S、兩個小數位及 kg 或 g。先是不穩定1.20kg,再穩定1.25kg。已訂規則取首個穩定訊息,得1,250,000mg,來源 kg 仍留。首個看得懂的數字未必合資格。

已填本地測試工作表
情況輸入 JSON
原例測試{"messages":["U|1.20|kg","S|1.25|kg"]}
下載可編輯 CSV ↓

跑所附比較

程序解析所附字串,以百分之一單位整數換算,不連真實磅,也不確認校準或自訂設備穩定容差。

錯誤及所需輸出
路徑輸出 JSON
錯誤路徑{"stableCaptured":false,"milligrams":1200000,"sourceUnit":"kg"}
所需路徑{"stableCaptured":true,"milligrams":1250000,"sourceUnit":"kg"}
下載可編輯 CSV ↓
完整本地 Node24.14.1 程序
import assert from 'node:assert/strict';

const run=function run(i,corrected=true){
    const messages=i.messages.map(s=>{const match=/^([US])\|(\d+)\.(\d{2})\|(kg|g)$/.exec(s);if(!match)throw new Error('Outside the literal device grammar');return {stable:match[1]==='S',hundredths:Number(match[2])*100+Number(match[3]),unit:match[4]};});
    const captured=corrected?messages.find(m=>m.stable):messages[0];if(!captured)return {held:true,reason:'no-stable-reading'};
    return {stableCaptured:captured.stable,milligrams:captured.hundredths*(captured.unit==='kg'?10000:10),sourceUnit:captured.unit};
  };
const cases=[{"input":{"messages":["U|1.20|kg","S|1.25|kg"]},"corrected":false,"expected":{"stableCaptured":false,"milligrams":1200000,"sourceUnit":"kg"}},{"input":{"messages":["U|1.20|kg","S|1.25|kg"]},"corrected":true,"expected":{"stableCaptured":true,"milligrams":1250000,"sourceUnit":"kg"}},{"input":{"messages":["S|1250.00|g"]},"corrected":true,"expected":{"stableCaptured":true,"milligrams":1250000,"sourceUnit":"g"}},{"input":{"messages":["U|1.20|kg"]},"corrected":true,"expected":{"held":true,"reason":"no-stable-reading"}}];
for(const test of cases){const actual=await run(test.input,test.corrected);assert.deepEqual(actual,test.expected);console.log(actual);}
下載可執行例子 ↓

按邊界依據作判斷

穩定1250.00g 得同一毫克值,g 仍留;全是 U 就以 no-stable-reading 暫停。

  1. 沿已訂格式讀
  2. 選穩定訊息
  3. 原單位與統一值一起留

沒有穩定依據就停,不用最後未穩定數字頂替。

可編輯邊界輸入及結果
條件輸入 JSON預期輸出 JSON
穩定值以克表示{"messages":["S|1250.00|g"]}{"stableCaptured":true,"milligrams":1250000,"sourceUnit":"g"}
沒有穩定訊息{"messages":["U|1.20|kg"]}{"held":true,"reason":"no-stable-reading"}
下載可編輯 CSV ↓

原例可收哪個讀數?

查看參考答案

穩定1.25kg。按所附穩定標記規則,早前1.20kg 仍不合資格。

相關資源