跳至內容
Astera Technology

鍵盤配置不同,代碼符號也要核

實體鍵標記須沿明訂配置解讀。

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

訂判斷及所需輸入

題內 L1 把 K1、K2、K3 變 A/B,L2 則 A-B。報 L2 卻一律套 L1,符號就錯。只有實體鍵標記,未選定代碼怎樣讀。

已填本地測試工作表
情況輸入 JSON
原例測試{"layout":"L2","keys":["K1","K2","K3"]}
下載可編輯 CSV ↓

跑所附比較

程序只執行所附對應,不代表作業系統、掃描韌體或地區驅動程式;清單收件仍要自己的代碼規則。

錯誤及所需輸出
路徑輸出 JSON
錯誤路徑{"layout":"L2","code":"A/B"}
所需路徑{"layout":"L2","code":"A-B"}
下載可編輯 CSV ↓
完整本地 Node24.14.1 程序
import assert from 'node:assert/strict';

const run=function run(i,corrected=true){
    const layouts={L1:{K1:'A',K2:'/',K3:'B'},L2:{K1:'A',K2:'-',K3:'B'}};
    if(!Object.hasOwn(layouts,i.layout)||i.keys.some(k=>!Object.hasOwn(layouts[i.layout],k)))return {held:true};
    return {layout:i.layout,code:i.keys.map(k=>layouts[corrected?i.layout:'L1'][k]).join('')};
  };
const cases=[{"input":{"layout":"L2","keys":["K1","K2","K3"]},"corrected":false,"expected":{"layout":"L2","code":"A/B"}},{"input":{"layout":"L2","keys":["K1","K2","K3"]},"corrected":true,"expected":{"layout":"L2","code":"A-B"}},{"input":{"layout":"L1","keys":["K1","K2","K3"]},"corrected":true,"expected":{"layout":"L1","code":"A/B"}},{"input":{"layout":null,"keys":["K1"]},"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);}
下載可執行例子 ↓

按邊界依據作判斷

L1 正當結果是 A/B;配置未知或鍵未有對應便停。

  1. 核所選配置
  2. 對整段鍵序列
  3. 核最後代碼

不能用假設對應推真正設備配置。

可編輯邊界輸入及結果
條件輸入 JSON預期輸出 JSON
沿第一套配置{"layout":"L1","keys":["K1","K2","K3"]}{"layout":"L1","code":"A/B"}
配置欠缺{"layout":null,"keys":["K1"]}{"held":true}
下載可編輯 CSV ↓

原例 L2 應得哪個代碼?

查看參考答案

A-B,連 L2 一起留。實體鍵相同,A/B 也仍屬 L1。

相關資源