问题标签 [cryptarithmetic-puzzle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
588 浏览

prolog - 在 Prolog 中获取许多可能的解决方案之一

我正在尝试学习 Prolog。我看了看这个脚本:

来源: https ://github.com/Anniepoo/prolog-examples/blob/master/sendmoremoney.pl

我像这样运行它并得到一些输出:

看起来这给了我每个字母的一系列可能值。但是我怎样才能得到一个解决方案,其中每个字母都分配给一个可能的值?似乎是一个非常基本的问题,但我无法弄清楚。

0 投票
1 回答
506 浏览

artificial-intelligence - 我的考试中问的通用密码算术难题

任何人都可以逐步解决这个密码算法吗 谢谢

0 投票
3 回答
858 浏览

c - 密码算法求解器分解的效率

问题如下:给定“ABC+DEF=GHI”格式字符串,其中 A、B、C 等表示唯一数字,找到给出最大 GHI 的表达式。例如:输入字符串为AAB+AAB=AAB,则无解。如果改为 AAA + BBB = AAA,则解为 999 + 000 = 999。另一个示例字符串:ABC + CBA = GGG,结果为 => 543 + 345 = 888。

我很容易排除了不可能的情况。我想到的算法是蛮力的,它只是首先尝试最大化 rhs。然而,我的问题是这样做的速度很快,并且还要注意唯一的数字。解决这个问题的有效方法是什么?

注意:我希望用单线程方法解决这个问题,我目前的问题是检测“assign_value”函数中是否使用了唯一数字。也许有更好的赋值方法?

编辑:根据 smci 的建议,这就是我最终想要实现的目标: ABRA + CADABRA + ABRA + CADABRA == HOUDINI ;7457 + 1797457 + 7457 + 1797457 == 3609828 -- 一个系统不仅可以处理我在开头提供的形式的字符串(3位数字+ 3位数字= 3位数字),还可以处理那些。但是,从简单开始并使用我给出的格式解决方案并没有什么坏处:)

0 投票
1 回答
330 浏览

c++ - 我被这个口头算术算法困住了

给定格式字符串(11个字符,无空格),格式为ABC+DEF=GHI,其中A、B、C、D、E、F、G、H、I代表十进制数字(0、1、2、 3, 4, 5, 6, 7, 8, 9) “占位符”(不一定是不同的!),开发并实现一种算法来找到给出最大 GHI 的 3 位正数(ABC、DEF 和 GHI)给定的平等。字母(A、B、C、D、E、F、G、H、I)是“占位符”,因此您可能有重复的数字。例如在公式 ABA+BBB=GGB 中,所有的 B 代表相同的十进制数字。您的算法还应检查是否无法找到此类数字。例如,对于公式 AAB+AAB=AAB,不可能用十进制数字满足它。您的程序会告诉“没有解决方案!”。可能有不止一种解决方案。在这种情况下,只需输出您的算法找到的第一个。继续,直到用户输入 -1 作为程序将退出的公式,说“再见!”。

这是一个示例运行:

输入公式:AAB+AAB=AAB

没有解决方案!输入公式:AAA+BBB=AAA

999+000=999

输入公式:-1

再见!

这是我之前写的代码:

但它似乎并不能完全解决问题。我怎样才能修改我的代码以获得这个问题想要的东西。

0 投票
2 回答
147 浏览

prolog - 算法的序言改进

如果我减少变量 VarList 的数量。它提高了速度吗?

如果我S*1000+E*100+N*10+D + M*1000+O*100+R*10+E =:= M*10000+O*1000+N*100+E*10+Y

在检查之前它会提高速度吗?

0 投票
2 回答
604 浏览

optimization - Prolog:如何优化此代码(解决 123456789=100 难题)

于是就有了一个谜题:

这个等式是不完整的:1 2 3 4 5 6 7 8 9 = 100。使其准确的一种方法是添加七个加号和减号,如下所示:1 + 2 + 3 – 4 + 5 + 6 + 78 + 9 = 100。你怎么能只用 3 个加号或减号呢?

我对 Prolog 很陌生,解决了这个难题,但我想知道如何优化它

0 投票
1 回答
338 浏览

prolog - 密码运算

我试图为“SEND MODE MONEY”编写 Prolog 代码。到目前为止,我得到了以下信息:

输出如下:

但是我想在结尾而不是开头打印列表我该怎么做?

我需要得到的输出是:

谢谢你。

0 投票
1 回答
137 浏览

prolog - 一些隐式约束

当我执行此代码(如下所示)时,它总是设置隐式约束。

正如您在下面看到的,它总是这样说,D1 = D2但是没有这样的显式约束,也没有任何模式匹配会强制这样做。

或者换句话说,在和之间有一些引用D1D2这样每当D1被初始化时,D2就会自动初始化。我看不出这是怎么回事。有人可以解释一下吗,我试着用调试器解决它,但它没有帮助。

这是一个谜题“GERALD + DONALD = ROBERT”,最初三个列表包含这些变量。 在此处输入图像描述

如果有人想测试它,我在下面添加代码:

询问:

0 投票
0 回答
123 浏览

prolog - AM + PM = DAY CryptoArithmetic Puzzle Prolog

我需要输出格式如下。除了最后一行,我有确切的输出,我不知道如何将最后一行添加到输出中。我将不胜感激任何帮助。

输出

代码

0 投票
2 回答
716 浏览

prolog - 带有 Prolog CLPFD 的密码拼图

我最近在 Google Play 应用商店中发现了一款​​名为Cryptogram的小游戏。有几十个类似的应用程序。这个想法是将数字与颜色相匹配,以使所有方程式听起来都正确。

我能够很快地通过手工解决问题 1-8 和问题 10,但问题 9 对我来说更难。

问题 9 问题 9

经过一段时间的修补和猜测,我放弃了,决定编写一个解决方案。作为本科生,我使用 Prolog/Datalog 完成了一些小任务以及一些Project Euler问题。以前我见过15 行数独求解器,它使用 Prolog 的有限域约束逻辑编程 (clpfd) 库,我决定自己试一试。我正在使用SWI-Prolog

当我在 SWI-Prolog 中运行此查询时的输出让我觉得我误解了 CLPFD 中的一个大概念:

我希望颜色列表中的每种颜色都绑定到 0..9 范围内的单个不同整数,但这不是正在发生的事情。你能帮我找到解决这个问题的方法吗?

编辑

所以我选择了一种任意颜色,并开始在约束所说的有效范围内为其分配数字。我在 Cyan 绑定到 1 的情况下运行了这个查询。

这没有任何意义。前面的“输出”说“1..7 中的青色”,我认为这意味着该范围内的任何值都是有效的。但是,如果我为 Cyan 选择另一个任意值:

我得到了我正在寻找的答案。虽然 Cryptogram 解决了,但我仍然不明白为什么 Prolog 的 CLPFD 库没有完全独立地找到它。

编辑 2

我使用您的建议来清理代码。我还重新引入了将数字与数字联系起来的谓词。此代码块完美运行。