You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现4位PIN码与单词数组双向编解码,适配寻宝/密室逃脱游戏场景

方案1:顺序相关实现(零复杂度,快速落地)

你之前尝试的索引遍历方案只需要补一层反向映射即可跑通,逻辑如下:

  • 提前准备固定的总单词表,长度建议选10的整数倍(比如1000个词完全够用),每个单词对应唯一的索引值

编码逻辑(输入4位PIN→输出4个单词)

把4位PIN拆成4个独立数字d1 d2 d3 d4(比如8370拆为[8,3,7,0]),对每个位置的数字di,从单词表里取索引 = di * 100 + 自定义场次偏移量的单词即可,场次偏移量可以每换一批谜题就修改一次,完全灵活自定义。

解码逻辑(输入4个单词→输出4位PIN)

提前构建哈希表存储单词→对应数字的反向映射,输入单词后直接查表得到4个数字,拼接就是最终PIN。你之前解码卡壳就是缺了这层反向映射,几行代码就能实现。

方案2:顺序无关实现(满足理想需求)

逻辑同样简单,不需要复杂算法:

  • 提前给所有备选秘密单词各分配一个唯一的随机整数(范围随便选,比如0~99999即可),存储正反映射表:单词→随机数、随机数→单词

编码逻辑(输入4位PIN→输出4个单词)

  1. 从单词库中选4个单词,要求这4个单词对应的随机数相加后,总和 % 10000等于输入的PIN值
  2. 把生成的PIN和对应4个单词的映射提前存好,每场游戏直接调用即可

解码逻辑(输入4个单词→输出PIN)

  1. 查表得到每个输入单词对应的随机数,把四个数加总
  2. 计算总和对10000取模的结果,就是输出的4位PIN,天然无视输入顺序

这个方案完全匹配你给出的示例效果,不管单词输入顺序怎么换,求和结果一致,得到的PIN自然相同。

可用参考思路
  • BIP39助记词算法:加密货币领域常用的随机数转单词方案,原生支持双向转换,你可以直接裁剪它的映射逻辑使用,不用管密码学相关的安全部分,它自带2048个固定单词的映射表,刚好满足需求
  • 极简哈希方案:如果不想提前建映射表,直接对每个单词计算ASCII编码和,或者用编程语言内置的哈希方法,求和取模即可,连提前存储单词映射的步骤都能省,游戏场景下极低概率的碰撞完全可以忽略。
极简实现代码示例(JS,顺序无关)
// 提前配置的单词-随机数映射,每场游戏可自定义修改
const wordMap = {
  "danger": 1234,
  "writer": 5678,
  "negative": 9012,
  "origin": 3456,
  // 其余单词按格式补充即可
}

// 解码功能
function decode(words) {
  const sum = words.reduce((acc, word) => acc + (wordMap[word] || 0), 0)
  return sum % 10000
}

// 编码功能
function encode(pin) {
  // 提前存储PIN和对应4个单词的映射,直接返回即可
  const pinMap = {
    8370: ["danger", "writer", "negative", "origin"],
    2455: ["party", "fish", "cookie", "cactus"]
  }
  return pinMap[pin] || []
}

内容的提问来源于stack exchange,提问作者Victor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:24:05