问题标签 [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 投票
3 回答
6489 浏览

prolog - Prolog : 以身作则

我正在尝试学习一些关于 swi-prolog 的知识(除了基本的、无用的程序)。

谁能解释(也许用伪代码)这个数独求解器和相关函数在做什么?如果您需要更多参考,可以在 swi-prolog 的 CLP(FD) 包中找到。

谢谢!

0 投票
4 回答
1295 浏览

prolog - 计算不同奇数的列表(如果存在),使得它们的总和等于给定数

这是我的代码,我似乎无法获得正确的输出,任何代码批评者?:)

0 投票
1 回答
9071 浏览

prolog - Prolog中的整数除法运算符

这段代码是我正在编写的程序的一部分,用于解决 prolog 中的一个密码谜题。我正在使用 CLPFD (SICStus Prolog) 解决这个问题。使用内置整数除法运算符“//”时出现错误(有关详细信息,请参见下文)。我无法解决这个问题所以我编写了自己的整数除法函数。

我想知道的是为什么“//”失败了。其他算术运算符(如 +、-、/)没有这样的问题

前:

这是我得到的错误

错误:域错误:clpfd_expression' expected, found(0+_G1592+_G1586)//10' 异常:(12) throw(error(domain_error(clpfd_expression, (0+_G3994{0..9}+_G3991{0..9})// 10),_G3976))?

后:

这完美地工作我所做的只是用我自己的整数除法版本替换“//”

0 投票
9 回答
15192 浏览

algorithm - 解决 N 皇后问题……我们能走多远?

N皇后问题:

这个问题指出,给定一个大小为 N 乘 N 的棋盘,找出不同的排列方式,其中 N 个皇后可以放在棋盘上而没有任何人互相威胁。

我的问题是:
程序可以在合理的时间内计算出答案的 N 的最大值是多少?或者到目前为止我们见过的最大的 N 是多少?

这是我在 CLPFD(Prolog) 中的程序:

这个程序工作得很好,但是它所花费的时间随着 N 的增加而不断增加。这是一个示例执行:

这意味着您将 4 个皇后放置在第 1 列的第 2 行、第 2 列的第 4 行、第 1 行在 3 中和第 3 行在 4 中。(在 4×4 棋盘中)

现在让我们看看这个程序是如何执行的(计算第一个排列所用的时间):
N=4,5.....10 在一秒钟内计算
N=11-30 需要 -1-3 秒
N=40 ..50 仍然在一分钟内计算
在 N=60 它超出了全局堆栈(搜索空间巨大)。

这是过去的作业问题。(最初的问题只是编码 N-Queens)

我也有兴趣看到其他语言的替代实现(比我的实现更好)或者如果我的算法/程序有改进的空间

0 投票
3 回答
1207 浏览

prolog - Prolog算术语法

如何定义a为整数/浮点数?

我想找到a+b+c+d=10where a,b,c,dis integer and的结果>=0

0 投票
1 回答
2599 浏览

prolog - 使用 Prolog 将任务调度到单个资源

我尽我所能在这里搜索,虽然我发现了一些相关的问题,但我认为它们没有涵盖手头的问题:

假设一个资源和一个已知的请求列表来安排任务。每个请求都包含一个 start_after、start_by、expected_duration 和 action。

目标是尽快安排任务执行,同时将每个任务安排在 start_after 和 start_by 之间。

我编写了一个简单的 Prolog 示例,我“认为”应该可以工作,但不幸的是在运行时遇到错误:">=/2: 参数没有充分实例化"。

任何帮助或建议将不胜感激

编辑:冲突目标不太正确:需要额外的 T>T1 子句。

编辑:如果我提供有效的请求,时间对,显然我的日程安排目标有效......但是当给定 R1..3 时,我试图强制 Prolog 找到 T1..3 的有效值?

0 投票
3 回答
378 浏览

prolog - Prolog:识别 n >= 1 的 a^nb^(n+1) 语言

我知道我需要弄清楚自己的作业,但是看到班上没有人能弄清楚,我需要一些帮助。

编写一个 Prolog 程序,p(X) 如果X是一个由n a' 后跟n+1 b's 组成的列表,则为真,对于任何n >= 1

0 投票
3 回答
5841 浏览

prolog - PROLOG 不一样

我对 PROLOG 有一个非常奇怪的问题。我以前用过它,但是用了一段时间,我生锈了。我有一个变量列表,我需要确保它们都不相同。

我试过了:

use_module(library(bounds)). all_different(A, B, C, D, 6, 8).

但是,当我尝试此操作时,我收到一条错误消息,指出 all_different/6 未定义。

我该如何解决这个问题?有没有我可以直接为此调用的库函数?

我非常卡住,非常感谢任何帮助。

提前致谢。

0 投票
2 回答
306 浏览

prolog - 了解序言 [列表]

我要编写一个执行此操作的程序:

(给出 2 到 5 之间的所有对 X,X+1,加上最后的特殊情况)。

这应该是解决方案。我真的不明白它是如何工作的,有人可以指导我吗?

我会这样做:

为什么它不起作用(最后忽略特殊情况)?

0 投票
6 回答
1337 浏览

prolog - 用 SICStus Prolog 概括斐波那契数列

我正在尝试为广义斐波那契数列 (GFS) 的查询找到解决方案。问题是:是否有任何 GFS 的第 12 个数字为 885?前 2 个数字可能被限制在 1 到 10 之间。

我已经找到了在从 (1, 1) 开始的序列中找到第 N 个数字的解决方案,其中我明确定义了初始数字。这就是我所拥有的:

对于提到的查询,我认为以下方法可以解决问题,其中我重用 fib 方法而不明确定义初始数字,因为现在需要动态完成:

...但这似乎不起作用。

以这种方式定义初始数字是不可能的,还是我做错了什么?我不是在寻求解决方案,但是任何可以帮助我解决此问题的建议将不胜感激。