首先, clp(fd) 文档提到: 在现代 Prolog 系统中,算术约束包含并取代整数上的低级谓词。 算术约束的主要优点是它们是真实的关系并且可以在所有方向上使用。 对于大多数程序,算术约束是您唯一需要从这个库中获得的谓词。 其次,在先前提出的问题中,提到include/3与 clp(fd) 不 ...
首先, clp(fd) 文档提到: 在现代 Prolog 系统中,算术约束包含并取代整数上的低级谓词。 算术约束的主要优点是它们是真实的关系并且可以在所有方向上使用。 对于大多数程序,算术约束是您唯一需要从这个库中获得的谓词。 其次,在先前提出的问题中,提到include/3与 clp(fd) 不 ...
我有一个 prolog 规则position_that_is_equals_to_two将X设置为 position,在提供的三个元素[X, Y, Z]列表中找到数字2 : 查询时,我立即得到false : 但是,当我用单独的比较替换include/3时, prolog 为X提供了三个可能的值,这 ...
这段代码在第 2 行(Vars in 1..3,)中给出了这个错误:错误:c:/users/xxxx/desktop/prolog/tp2.pl:2:20: Syntax error: Operator expected ...
我正在尝试实现一个类似数独的解谜器,它涉及 prolog 中的组,其中一个规则是相同的值不能在同一组中重复。 我的代码“有效”,但最终“分裂成两个分支”: 理想情况下,对于这个示例,我希望它返回一个I值并填充所有值,但我什至不知道发生了什么。 为什么会这样分支? 我应该怎么做才不会分支? 编辑:我已 ...
我一直在尝试修改clpfd 文档中可用的数独解算器,以解决大于数独的谜题,例如这个: 大于数独游戏示例在这些谜题中,每个块包含单元格之间的十二个不等式(六个水平不等式和六个垂直不等式),作为解决方案的一部分必须满足这些不等式。 我将不等式建模为九个列表的列表,每个列表包含从 0 到 1 的六个整数, ...
上面的表达式在 swi prolog 终端上发布时不会终止。 我试过交换目标的顺序。 和 我正在为 x86_64-linux 使用 SWI-Prolog 版本 8.4.3 ...
我是 Prolog 的新手,我正在编写一个程序来枚举 Prolog 中的二叉树。 这是我的程序: 但是,我不断得到 在N的第 3 行。 我试图消除空格或再次手动重新键入代码,但它不起作用。 ...
假设,我们有以下游戏: 有一对数字 (x, y),有 2 名玩家在走棋。 在移动过程中,玩家可以将任何数字增加 1 或将其乘以 2。在移动后 (x + y) >= 77 的玩家获胜。 初始的 position 是 (8, x),求最小的 x,比如如果第一个玩家下棋不成功,那么第二个玩家获胜。 ...
我正在使用约束逻辑编程,我想 output 一个列表,列表的乘积(不包括第一个元素)等于第一个元素。 例如, [24 6 _ _] the output would be [24 6 1 4] or [24 6 4 1] or [24 6 2 2] etc.我正在尝试解决类似于数独的问题,但我被 ...
假设 L 是L = [[1,100,_], [200, _,94]]. 我有一个我使用的代码append(List, L), L ins 1..90, ....... L ins 1..90是错误的,因为有些元素不在域中。 但我希望 L ins 1..90 只指定未绑定的变量而不是整个列表。 有办 ...
我一直在尝试学习 prolog,但在限制可在我的解决方案中使用的可能整数时遇到了问题。 例如,在我的 SWI 终端中,我运行[X,Y,Z] ins 0..1,X #\= Y, Y #\= Z, Z#\= Y. 作为 output 我得到了 当我想变得虚假时。 这只是我一直遇到的问题的一个例子。 我 ...
以下是 Prolog 中计算列表长度的 4 种不同方法: list_length1 - 数学简单,适用于所有方向 list_length2 - 不知道这有什么用,通过类比创建 list_length3 - 上次调用优化,仅在一个方向上工作 list_length4 - 递归,单 ...
我编写了这段代码来使用 prolog 解决地图着色问题: 我尝试使用查询获得解决方案: 但我总是收到错误“参数没有充分实例化” ,如何解决这个问题? ...
我正在尝试将整数列表转换为 CLPFD 域。 例如[1,5,7] -> 1\/5\/7 。 我尝试阅读文档,但找不到任何内容。 我唯一找到的是 fd_dom/2。 fd_dom 文档。 在这里,他们将域转换为整数列表(与我想要的相反)。 一般来说,我是 CLPFD 和 prolog 的新手。 ...
我通过 Advent of Code 挑战来学习 Prolog。 代码出现 2021 天第 7 天的剧透如下: 目标是:给定一个自然数列表n_1,..., n_k ,找到 在下面的代码中norm1计算求和, cost计算给定x的总和, lowest_cost计算所有x的最小值。 一些示例查询: 使 ...
Prolog 可以用 CLP(FD) 解决这个难题吗? 我看到了一些问题使用 CLP(FD) 进行操作,因为可能需要分饼: 爱德华正在去拜访他的祖母的路上,他还活着在 state 的末尾。 今天是她的生日,他想要把他做的蛋糕给她。 在他的位置之间和她奶奶家,他要过7座收费桥。 在你可以过收费桥之前 ...
给定可能的被加数列表,我想确定哪些(如果有)可以形成给定的和。 例如,使用 [1,2,3,4,5] 我可以将 9 与 [4,5]、[5,3,1] 和 [4,3,2] 相加。 我正在使用 GNU Prolog 并且有类似以下的东西不起作用 我认为主要问题是我没有正确表示总和的约束? 或者也许是别的 ...
所以我试图让我的 item_list_itemCount 关系尽可能的普遍,它确实有效,至少在某一点之前。 这是代码: 例如,查询item_list_count(1, [1,1,1,2,2,3], Count). 在回溯时给出正确的第一个解决方案和其他错误的解决方案。 我有一些关于为什么会这 ...
所以当我实例化我的整数变量时,我的所有树代码都不能正常工作。 这是我的意思的一个例子: 我实际上并没有使用它,但这是我对树的定义: 因此,如果运行以下查询tree_order(Tree, 2). 它给了我一个解决方案,然后当它回溯时,它会进入无限循环。 老实说,这让我感到困惑,因为我已经在脑 ...
所以,我的目标是在 Prolog 中制作地图着色器。 这是我正在使用的地图: 这是我的着色限制: 其中 [A,B,C,D,E,F] 是从 1 到 n 的数字(颜色)列表。 因此,我希望我的求解器在给定 6 种颜色列表和自然数 N 的情况下,以两种方式确定颜色和 N 约束,以一种即使是最一 ...