问题标签 [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 - 可逆树长关系
我正在尝试在“纯” Prolog 中编写可逆关系(不is
,剪切或类似的东西。是的,这是家庭作业),我必须承认我不知道如何。我没有看到任何创建这样的东西的过程。
我们得到了“不纯”但可逆的算术关系(add、mult、equal、less...),我们必须使用它来创建这些关系。
现在,我正在尝试通过创建关系来了解如何创建可逆函数,tree(List,Tree)
如果List
是二叉树的叶子列表,则该关系为真Tree
。
为了实现这样的事情,我试图创建当有叶子tree_size(Tree,N)
时为真的关系。这是我天真的、不可逆的关系:Tree
N
我可以做查询tree_len(some tree, N)
,但不能,说,tree_len(X,3)
所以它是不可逆的。到目前为止,我已经尝试了一些事情,但我必须承认我感到沮丧,因为我不知道在哪里寻找什么。实际上有办法做到这一点吗?
prolog - Prolog:按奇偶性划分整数列表项
编写一个谓词,将整数列表作为输入L
,并生成两个列表:包含来自L
的偶数元素的列表和来自 的奇数元素的列表L
。
prolog - 如何在 SWI-Prolog 中复制预定义长度/2 的行为?
我正在尝试复制标准 length/2 谓词的行为。特别是,我希望我的谓词适用于有界和无界参数,如下例所示:
简单明了的实现:
有一些问题。在案例 3 中,在产生正确答案后,它进入了一个无限循环。这个谓词可以转化为确定性的吗?还是因错误而停止的不确定性?
是的!但使用红色切割。请参阅:https ://stackoverflow.com/a/15123016/1545971
一段时间后,我设法编写了一组谓词,它们模仿了内置长度/2 的行为。my_len_tail 是确定性的,并且在所有情况 1-4 中都能正常工作。可以做得更简单吗?
正如@DanielLyons 在评论中建议的那样,可以使用clpfd来推迟检查。但它仍然留下一个问题:在案例 3 ( ) 中,谓词是不确定的。怎么可能修好?my_len_clp(X, 3)
可以使用zcompare/3
CLP(FD) 库修复它。请参阅:https ://stackoverflow.com/a/15123146/1545971
c - 年轻画面的编程
一个奇怪的问题接踵而至:
我在我的学校做一个解决问题的比赛,他们允许我们使用电脑。因为我是比赛中唯一知道如何编码的人,所以我使用 C 和 Pascal 程序来更快地解决问题。我已经通过伪代码到代码的练习、算法、Collatz 猜想验证等来做到这一点。
现在,昨天我正在为下一个挑战(4 月 18 日)进行训练,我看到了一个关于 Young 画面的练习。措辞是这样的(我会尽力从意大利语翻译):
“费雷尔图是分布在一个或多个水平行中的 N 个框的配置,左对齐并配置为使每一行包含的框数与其上的行相同或更少。这些配置也可以通过以下列表来描述盒子的编号,如下图所示:(来源:olimpiadiproblemsolving.it)
Young tableau 是 N 个盒子的 Ferrers 图,其中填充了从 1 到 N 的整数。示例:(来源:olimpiadiproblemsolving.it)
如果框中的数字按行和列按升序排序,则该表是“标准”表(例如:第一、第三和第五表)。在标准表格中,第一行的第一个框始终包含 1。N 始终位于图表其中一行的最左边的框中。
问题
考虑一个 [6,3,2,1,1,1] 费雷尔图:
1)如果 6 固定在第一行的第 6 个盒子上,而 11 固定在第一列的最后一个盒子里,有多少种方法可以您以标准方式完成图表?
2) 如果 7 固定在第 1 行的第 6 个盒子上,而 11 固定在第 1 列的最后一个盒子上,你可以用几种方式以标准方式完成图表?
3)如果8固定在第一行的第6个盒子上,11固定在第一列的最后一个盒子上,你可以用多少种方式以标准方式完成图表?”
我试图编写一个解决方案用一个填充了这些数字的矩阵,并用“-1”作为“行结束字符”,但我被卡住了。我该如何编码“以各种可能的方式填充它,以便画面是标准的?”。
prolog - 约束规划,列表中数字的重复,序言
如何限制列表中数字的重复?
以下代码示例中合适的约束是什么?
一些示例查询和预期答案:
list - Prolog将整数转换为数字列表
我想写一个谓词,一个整数和一个数字列表,如果 Digits 以正确的顺序包含整数的数字,则成功,即:
这是我到目前为止所拥有的:
logic - 动态柔性约束满足问题
我正在寻找能够解决灵活和/或动态约束的逻辑约束求解器。有任何想法吗?
clojure - Clojure core.logic CLP(FD) 投影 FD 变量
我正在使用 Clojure 的 core.logic CLP(FD) 库(core.logic 版本 0.8.3)研究一个简单的平方打包算法。
正方形表示如下:
每个正方形表示为其左上角和右下角的坐标。
坐标是 FD 变量,在一定的区间内。
我想将解决方案的大小分别定义为距原点最近和最远的正方形的右上角和右下角之间的距离
这似乎适用于普通整数:
即使是完全约束的 FD 变量
但是,当变量的域没有受到完全约束时,它似乎会中断。例如,如果我删除 , 的约束y21 = 1
并且y11
在y21
其域中留下多个值:
我明白了
似乎project
只有当它们的域受到完全约束时才适用于 FD 变量。这是应该的吗?如果是,是否有人对如何对 FD 变量进行非关系算术有任何建议?
谢谢!