问题标签 [clpfd]

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 投票
4 回答
1301 浏览

prolog - Prolog:随机标记

我有一个使用约束用 Sicstus Prolog 编写的程序。我的目标是使用 labeling/2 和其他一些方法来获得我的变量的随机实例化。

例子:

如果我使用

获得的第一个结果将是 X = Y = Z = 0。您认为返回 X、Y 和 Z 的随机值集的最佳方法是什么?

0 投票
3 回答
2743 浏览

prolog - 在 Prolog 中将 peano 数 s(N) 转换为整数

我在教程中遇到了逻辑数的自然数评估,这让我有些头疼:

该规则大致说明:如果N0是自然的,如果不是,我们尝试将s/1返回的内容递归地发送到规则,直到内容为0,那么它是一个自然数,如果不是那么它不是。

所以我测试了上面的逻辑实现,心想,如果我想表示s(0)as1s(s(0))as ,这很有效2,但我希望能够转换s(0)1

我想到了基本规则:

所以这是我的问题:如何将 s(0) 转换为 1 并将 s(s(0)) 转换为 2?

已回复

编辑:我修改了实现中的基本规则,我接受的答案指向我:

所以我现在可以随心所欲地使用它了,谢谢大家!

0 投票
4 回答
1684 浏览

prolog - 初学者 - 添加 3 和 5 的倍数

我试图找到低于 1000 的所有 3 和 5 的正倍数之和。在添加应该从 5 的倍数之和中删除 3 的倍数的部分后,gprolog 将继续为询问?- sigma(1000,N).

问题显然在于 sigma5,但我不能完全发现它:

我的代码有什么问题?

0 投票
1 回答
3553 浏览

prolog - 如何在prolog中进行算术表达式评估?

我正在尝试解决 prolog 中的算术表达式(实现 - eclipse prolog)。要求解的算术表达式是这样的:

X 是要计算的值,所有其他 (A,B,C,D,E) 都是数字。

例如:5 * (3 + 2*X) + 2*X = 39,在计算时应将 X 赋值为 2。

将输入 Prolog 的查询(目标)将采用以下形式:

“结果”和“X”的值应该绑定(分配)在一起。我该如何编写序言程序来做到这一点..?

谢谢你。

0 投票
2 回答
236 浏览

prolog - 当目标/查询中的变量数量变化时如何解决 - Prolog Constrain Solver

这是使用 prolog 约束求解机制的经典 SENDMORY 密码算术问题解决方案的片段-

现在,要执行此操作,我将发送如下目标/查询:

这会给我返回数字的可能解决方案。

现在,我的问题是,我不想以这种方式对变量(如 S、E、N、...)进行“硬编码”,但目标/查询会给出变量的数量。例如,如果我通过的查询类似于:

然后,它应该只计算 SENDM 的值,并假设其他变量不适用,因此将 0 分配给这些变量,然后继续计算。下次我查询时,我可能会在查询中传递不同数量的变量。例如:

并且程序应该同样计算。

我想要实现的是针对上述场景的更通用的问题解决方案。对此的任何指示都非常感谢。我对 prolog 很陌生,并且正在使用 ECLIPSE 约束求解器。谢谢你。

0 投票
4 回答
7504 浏览

list - 将整数列表拆分为正整数列表和负整数列表

我一直在尝试在 Prolog 中创建一个谓词,它将整数列表拆分为正整数列表和负整数列表。

具有预期结果的示例查询:

这是我到目前为止得到的代码:

我似乎无法弄清楚我做错了什么。

0 投票
3 回答
440 浏览

prolog - 在 SWI-Prolog 结果中生成动态大小排列并带有 ERROR: Out of global stack

我正在尝试使用以下代码生成多个排列:

它返回了我所有的结果,但最终崩溃了ERROR: Out of global stack

0 投票
5 回答
20047 浏览

list - 简单的序言程序。出现错误:>/2:参数没有充分实例化

我做了一个 Prolog 谓词posAt(List1,P,List2)来测试位置 和 的元素P是否List1相等List2

测试时:

我期望输出,X = 2但我收到以下错误:

ERROR: >/2: Arguments are not sufficiently instantiated

为什么我会收到此错误?

0 投票
1 回答
1382 浏览

prolog - 在 Prolog 中解决逻辑难题(Kuromasu,黑细胞在哪里)

我在解决难题时遇到了一些问题。我还没有在任何地方找到这个难题的解决方案,但我尝试在 Prolog 中编写它,但我认为我的解决方案不会很快(我会生成每个解决方案,如果它们不可能或不正确,则将其删除)。这是我的问题:(我找到了那个拼图的名字,这里是那个拼图所有规则的链接:http ://en.wikipedia.org/wiki/Kuromasu )。现在我有一个不同的问题,哪种方法在 Prolog 中很容易编写并且可以很快地解决它。我想过将我的字段列表转换为无向图,或者可能有另一种方法可以垂直搜索我的列表(头接尾)?

在:

结果:

0 投票
1 回答
2201 浏览

matrix - prolog中的矩阵乘法

我找到了一个乘以矩阵的代码。

如果我输入:mult([[1,2],[3,4]],[[5,6],[7,8]],X).那么我得到 X = [[19, 22], [43, 50]].

但是我怎么能得到一个X = [[1*5+2*7, 1*6+2*8], [3*5+4*7, 3*6+4*8]] .

PS我是序言的新手。谢谢!