解密码的有效方法

2024-10-01 17:31:17 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我遇到了这个谜题,它是著名的基于单词和数字的谜题的一个子集,叫做Cryptarithms。假设你有一个表达式

序列号D+M O R E=M O N Y

有趣的是,每个字母表代表一个0-9之间的唯一数字。我想写一个通用解算器,但最终我为它编写了一个强力的解决方案。有人认为我该怎么解决?在

我认为可以用谓词逻辑或集合论来解决这个问题。我对寻找基于C或Python的解决方案特别感兴趣。有人吗。?在


Tags: 表达式代表数字逻辑解决方案单词子集字母表
3条回答

好吧,试着把它写成一个函数列表:

 SEND
 MORE
----+
MONEY

如果我记得我的初中数学,这应该是:

^{pr2}$

在今年的PyCon上,raymondhettinger谈到了用Python编写AI程序,并讨论了密码算法。在

整个谈话的视频可以在here上看到,有解决方案的食谱可以在this link上找到。在

这是一个如此小的问题,暴力解决方案并不是一个坏方法。假设每个字母必须代表一个唯一的数字(也就是说,我们不允许解S=9,M=1,*=0),我们看到要尝试的组合数是n!,其中n是密码中唯一字母的数目。要评估的理论最大组合数10!=3628800,对于计算机来说这是一个很小的数字。在

如果我们允许多个字母代表同一个数字,那么要尝试的组合数量将以10^n为界,同样,其中n是唯一字母的数目。假设只有大写英文字母,理论上最大的组合数是10^26,所以对于理论上最坏的情况,我们可能需要一些启发式方法。然而,大多数实用的密码算法都有少于26个唯一字母,因此正常情况下可能会有一个小于10的n限制,这对于计算机来说也是相当合理的。在

相关问题 更多 >

    热门问题