【发布时间】:2021-11-15 04:04:33
【问题描述】:
我正在开发一款寻宝/逃生室类型的游戏,玩家必须解决 4 个真实世界的谜题,所有谜题都会给他们一个单词。当他们完成所有的谜题后,他们应该前往一个小型网络应用程序,在那里他们可以输入他们找到的单词:该应用程序然后将这些单词转换为最终的秘密——在这种情况下,4 位数的密码变成了挂锁宝藏。
现在,如果有效单词列表是静态的,那将很容易,但它是一个交互式系统,其中谜题的输出在玩家之间不断变化。我试图想出一个简单的算法,这样我们就可以将 PIN 码编码和解码输入和输出单词数组,这样它们就可以在游戏中改变,而且只有人设置密码知道PIN,然后更改每个游戏的答案。
这些是约束:
- 应用程序不需要知道代码是对还是错。它只有一个编码功能(这里是一个挂锁码,给我 4 个字)和一个解码功能(这里是 4 个字,给我一个匹配的挂锁码)。因此玩家可以输入任何字词并收到一个代码作为回报,但不能保证它是正确的。
- 理想情况下,单词的顺序无关紧要(假设输入“绿草传奇派对”输出与“草绿派对传奇”相同的 PIN),但这听起来会让事情复杂化很多,所以我很高兴使代码需要按特定顺序输入
- 这是为了游戏,这里不需要加密安全
- 我确实已经有一个秘密词数组,所以基本上只需要从一个总是相同的基数中找到一个由 4 个数字组成的数组。
例如
Encode:
Input: 8370, output [“danger”, “writer”, “negative”, “origin”]
Input: 8375, output [“crab”, “junior”, “spider”, “pillar”]
Input: 2455, output [“party”, “fish”, “cookie”, “cactus”]
Decode:
Input: [“danger”, “writer”, “negative”, “origin”], output 8370
Input: [“writer”, “danger”, “negative”, “origin”], output 8370
Input: [“party”, “fish”, “cookie”, “cactus”], output 2455
Input [“pillar”, “crab”, “spider”, “junior”], output: 8375
我不一定要为这个问题寻找一个完整的解决方案,但我真的很想在哪里寻找指针——算法、库、现有工作。找到一个已经这样做的应用程序或现有算法的关键字让我无处可去。我尝试了一些选项(通过将 PIN 添加为索引来循环遍历一组单词),但总是卡在如何解码它。
【问题讨论】:
-
是否有一个封闭的列表,其中包含所有可能出现的单词?
-
是的,有 - 我将它们作为字典单词数组。
标签: javascript algorithm encryption hash