问题标签 [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.
prolog - fd_domain,等式不起作用
也许一些解决方案?似乎还可以;P 我收到了那个特定的错误:
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)。给我:
如您所见,每次都会删除一个子列表,我就是不明白为什么!
prolog - 使用 in_set/2 约束
我正在尝试使用约束X
不成为列表中的值。
不过,我不知道如何将列表转换为 FDSet。我有一个整数列表,[2,3,8,9]
我想将变量域限制X
为不在该列表中。我怎么做?谢谢。
prolog - 从行生成数独“盒子” - 序言
我正在尝试编写一个简单的程序来检查输入数独板当前是否不正确;即它在一行、一列或“框”中有两个相同的数字。我在行和列部分没有遇到任何问题 - 一个相当简单的任务,我使用以下代码完成(应该注意,'0' 表示尚未填充的正方形):
但是,我不太清楚如何生成将代表 KxK“框”的列表(其中 K 是行长的平方根)。我得到了 K 的值,我想我想按照将 row1 划分为 K 个子列表的方式做一些事情,然后将 row2 的 K 个子列表附加到 row1 的子列表的末尾,直到我到达 row(K*K)。
不幸的是,我真的不知道如何去做这件事?有没有我可以使用的 BIP 来做一些事情,比如获取一个列表并将其分解为 X 列表,每个列表长度为 Y?
否则,有什么想法吗?我知道一个很小但关于dowhile循环的东西,我想它们可以在这里实现,但我也不确定我会怎么做?非常感谢你的帮忙!
prolog - 超级运行时问题(蛮力方法),Prolog
我正在尝试根据事实制定时间表,事实以 course_meetings(主题,类型,组,描述)的形式,
我决定使用蛮力方法
我将生成所有可能的时间表,看看哪一个会通过所有约束,但是我生成的事实是 2.6,我该如何优化它,是否有更好的方法。例如。course_meetings(主题、类型、组、讲师、描述)。解决:-
我有 32 个这种格式的事实和排列它的 32!~= 2.6*10^32
java - 有限域求解器 fd_minimize/2
我需要最小化 Prolog 中的谓词。目前我正在使用 GNU Prolog Java。我有这个事实
它说给定的领土有X军队。现在我想找到给定玩家拥有的最小军队数量。所以我在写:
口译员说:
java.lang.IllegalArgumentException:目标当前未激活
过了一会儿,我发现了问题:http ://www.gprolog.org/manual/gprolog.html#htoc313 我认为问题是解释器的 Java 实现没有 FD 求解器。任何提示/解决方法?
prolog - 获取每个集合的总和为 X 的集合列表
我试图弄清楚如何生成一个集合列表,其中每个集合的长度为 N,每个集合的总和为 X。
我找到了这段代码:
我可以使用它来获取总和 X 的集合列表:
问题是这些都是排列,我正在寻找组合。我正在寻找的输出应该是这样的get_combos(Sum,Length,List)
:
任何指针?
prolog - PROLOG 谓词顺序
我有大量的方程,我试图用 PROLOG 来求解。但是,我遇到了一个小问题,因为它们没有以任何有用的顺序指定 - 也就是说,在定义它们之前使用了一些(如果不是很多)变量。这些都在同一个谓词中指定。PROLOG 可以处理以随机顺序指定的谓词吗?
lambda - 结束视图拼图,序言
我正在尝试使用 CLPFD 为 End View Puzzles 编写求解器(对于那些不熟悉的人,这里有一个简单的描述http://www.funwithpuzzles.com/2009/12/abcd-end-view-a1.html) . 我正在研究将应用于每一行/列的约束,并遇到了一些麻烦。
所以我认为它应该看起来像这样:
所以前三个步骤非常简单:初始化板,设置域,并确保该行不会重复除0
(我已经写了stop_repeats/2
谓词)以外的数字。我遇到的问题是处理left_value/3
谓词;我不太确定如何在这里进行,因为列表中的大部分内容都不受限制,而且我实际上并不知道第一个积极元素的位置。任何帮助将不胜感激!
performance - 在 Prolog 中更快地实现口头算术
我已经在 Prolog 中制作了一个有效的广义口头算术求解器,但它太慢了。运行简单的表达式 SEND + MORE = MONE Y 需要 8 分钟。有人可以帮我让它运行得更快吗?