36得票5回答
Prolog约束处理:装填正方形

我正在尝试在Prolog中解决一个约束处理问题。 我需要将尺寸分别为5x5、4x4、3x3和2x2的4个正方形放置在一个10x10的网格中,不能重叠。 我的变量看起来像这样: I'm trying to solve a constraint processing problem in ...

25得票1回答
从Prolog传递任意大小的整数到C

目前,我正在学习如何将SICStus Prolog与C代码进行接口。 我想在SICStus Prolog版本4中使用一个任意大小的整数“汉明重量”的C实现。 我认为我需要用于测试项类型(SP_is_integer)的C函数和用于访问Prolog项(SP_get_integer,SP_get...

11得票3回答
使用Prolog进行约束逻辑编程中的路径优化

我正在开发一个小的prolog应用程序,用于解决天大楼和栅栏难题。 一个未解决的难题: 已经解决的难题: 当我输入已经解决的难题时,程序很快、几乎立刻就可以验证它。 当我通过非常小的难题(例如2x2,当然是修改了规则)时,也能够相当快速地找到解决方案。 问题出在计算6x6“原生...

11得票1回答
冰冻/2的意外行为

我正在玩弄 prolog-coroutining 的谓词 freeze/2 和 frozen/2:?- freeze(X,a=a), frozen(X,Goal). ?- freeze(X,a=a), freeze(Y,b=b), X=Y, frozen(X,Goal). SICStus Pr...

10得票1回答
如何在SICStus Prolog中检查WAM代码

在黑客clpz在sicstus-prolog的背景下,我想一睹SICStus Prolog生成的warren-abstract-machine代码。例如,让我们剖析以下谓词! is_list([]). is_list([_|Es]) :- is_list(Es). 这是我现在正在做的: ...

8得票1回答
Prolog延迟评估:LIFO或FIFO唤醒?

许多Prolog系统都有一个freeze/2谓词,这个谓词可能应该被命名为geler/2,因为它甚至在Prolog-II之前就被发明了。 假设我有一个关于同一变量的条件,但是有两个不同的目标,即: ?- freeze(X, G1), freeze(X, G2), X=1. 什么是首选...

8得票4回答
Prolog: 随机标记

我有一个使用约束编写的Sicstus Prolog程序。 我的目标是使用labeling/2和其他方法来获得变量的随机实例化。 示例: X #> 2, Y #= 2*X, Z #<10 如果我使用 List = [X,Y,Z], labeling([], List) ...

7得票1回答
用累计函数表示设置时间

有很多排程问题的家族。我正在研究一个问题,其中我有任务家族,从一个家族转换到另一个家族需要重新配置机器(设置时间)。 我正在使用cumulatives[2/3]来解决这个问题,但我不确定如何表达设置时间。 在这个小例子中,我有10个任务属于3个不同的家族。任何任务都可以在任何机器上运行,但...

7得票2回答
使用约束编程的正方形拼图问题解决方案

问题:在网格中填入不接触或重叠的正方形(任意大小),甚至在角落处也不接触。下面和右边的数字表示相应列/行中填充的网格方块数量。 为解决这个问题,我应用了以下约束条件:放置的正方形应该是不相交的,并且为确保网格方块数正确,我限制了与给定行/列相交的正方形长度之和等于该行/列数。 然而,输...