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

prolog - fd_domain,等式不起作用

也许一些解决方案?似乎还可以;P 我收到了那个特定的错误:

0 投票
2 回答
456 浏览

prolog - 列出构建问题

对于我的程序,我需要制作一个列表列表,每个子列表包含 2 个数字 X 和 Y 以及这两个数字的总和和乘积。到目前为止,我有以下内容:

这适用于我的 genList(5,5,Q) 测试用例。但是,我无法使其适用于任何起始号码。

目标是找到 sum<= 100 的每一对数字。因此,对于一个起始值,X 将找到每一对 1 < X < Y,其中 sum<=100,并用所有数字 2 遍历它-N 将给出可能对的完整列表。

对于那些感兴趣的人,我正在解决的问题是总和/乘积问题,在这里描述(第二页)

如果有人可以提供帮助,将不胜感激!

此外,无法使用内置的 prolog 谓词,因此执行此操作的方法很复杂,而不是使用 findall。

此谓词产生的输出的一小部分摘录如下:

[[5,6,11,30],[5,7,12,35],[5,8,13,40],[5,9,14,45],[5,10,15,50] ,[5,11,16,55],[5,12,17,60],[5,13,​​18,65],[5,14,19,70],[5,15,20,75] ,[5,16,21,80],[5,17,22,85],[5,18,23,90],[5,19,24,95],[5,20,25,100],[ 5,21,26,105],[5,22,27,110], ...

编辑:

好的,所以经过一些编辑,这是我的代码的最新版本。

我认为它非常接近,但仍有一些不太对劲的地方。

它在数字对中循环,但需要使用“;” 查看所有答案,这不是我想要的。此外,在所有答案都用完后,它会返回 false。我就是想不通。

此外,它在中间给出了一个完整的答案,但每次都会删除一个子列表,直到我只剩下最后一组对。

例如 genList(0,48,48,Q)。给我:

如您所见,每次都会删除一个子列表,我就是不明白为什么!

0 投票
2 回答
334 浏览

prolog - 使用 in_set/2 约束

我正在尝试使用约束X不成为列表中的值。

来自SICStus Prolog 手册

不过,我不知道如何将列表转换为 FDSet。我有一个整数列表,[2,3,8,9]我想将变量域限制X为不在该列表中。我怎么做?谢谢。

0 投票
1 回答
832 浏览

prolog - 从行生成数独“盒子” - 序言

我正在尝试编写一个简单的程序来检查输入数独板当前是否不正确;即它在一行、一列或“框”中有两个相同的数字。我在行和列部分没有遇到任何问题 - 一个相当简单的任务,我使用以下代码完成(应该注意,'0' 表示尚未填充的正方形):

但是,我不太清楚如何生成将代表 KxK“框”的列表(其中 K 是行长的平方根)。我得到了 K 的值,我想我想按照将 row1 划分为 K 个子列表的方式做一些事情,然后将 row2 的 K 个子列表附加到 row1 的子列表的末尾,直到我到达 row(K*K)。

不幸的是,我真的不知道如何去做这件事?有没有我可以使用的 BIP 来做一些事情,比如获取一个列表并将其分解为 X 列表,每个列表长度为 Y?

否则,有什么想法吗?我知道一个很小但关于dowhile循环的东西,我想它们可以在这里实现,但我也不确定我会怎么做?非常感谢你的帮忙!

0 投票
2 回答
218 浏览

prolog - 超级运行时问题(蛮力方法),Prolog

我正在尝试根据事实制定时间表,事实以 course_meetings(主题,类型,组,描述)的形式,

我决定使用蛮力方法

我将生成所有可能的时间表,看看哪一个会通过所有约束,但是我生成的事实是 2.6,我该如何优化它,是否有更好的方法。例如。course_meetings(主题、类型、组、讲师、描述)。解决:-

我有 32 个这种格式的事实和排列它的 32!~= 2.6*10^32

0 投票
2 回答
394 浏览

java - 有限域求解器 fd_minimize/2

我需要最小化 Prolog 中的谓词。目前我正在使用 GNU Prolog Java。我有这个事实

它说给定的领土有X军队。现在我想找到给定玩家拥有的最小军队数量。所以我在写:

口译员说:

java.lang.IllegalArgumentException:目标当前未激活

过了一会儿,我发现了问题:http ://www.gprolog.org/manual/gprolog.html#htoc313 我认为问题是解释器的 Java 实现没有 FD 求解器。任何提示/解决方法?

0 投票
2 回答
457 浏览

prolog - 获取每个集合的总和为 X 的集合列表

我试图弄清楚如何生成一个集合列表,其中每个集合的长度为 N,每个集合的总和为 X。

我找到了这段代码:

我可以使用它来获取总和 X 的集合列表:

问题是这些都是排列,我正在寻找组合。我正在寻找的输出应该是这样的get_combos(Sum,Length,List)

任何指针?

0 投票
1 回答
1406 浏览

prolog - PROLOG 谓词顺序

我有大量的方程,我试图用 PROLOG 来求解。但是,我遇到了一个小问题,因为它们没有以任何有用的顺序指定 - 也就是说,在定义它们之前使用了一些(如果不是很多)变量。这些都在同一个谓词中指定。PROLOG 可以处理以随机顺序指定的谓词吗?

0 投票
2 回答
391 浏览

lambda - 结束视图拼图,序言

我正在尝试使用 CLPFD 为 End View Puzzles 编写求解器(对于那些不熟悉的人,这里有一个简单的描述http://www.funwithpuzzles.com/2009/12/abcd-end-view-a1.html) . 我正在研究将应用于每一行/列的约束,并遇到了一些麻烦。

所以我认为它应该看起来像这样:

所以前三个步骤非常简单:初始化板,设置域,并确保该行不会重复除0(我已经写了stop_repeats/2谓词)以外的数字。我遇到的问题是处理left_value/3谓词;我不太确定如何在这里进行,因为列表中的大部分内容都不受限制,而且我实际上并不知道第一个积极元素的位置。任何帮助将不胜感激!

0 投票
6 回答
3852 浏览

performance - 在 Prolog 中更快地实现口头算术

我已经在 Prolog 中制作了一个有效的广义口头算术求解器,但它太慢了。运行简单的表达式 SEND + MORE = MONE Y 需要 8 分钟。有人可以帮我让它运行得更快吗?