我正在尝试使用其CLP(FD)在BProlog中实现词典排序约束。 据我所知,手册中的BProlog没有提供内置的lexLeq约束(尽管这种全局约束存在有效的传播算法),所以我正在尝试编写自己的并按以下方式表达排序二进制约束: X1 #=< Y1, (X1 #= Y1) #=> ...
我正在尝试使用其CLP(FD)在BProlog中实现词典排序约束。 据我所知,手册中的BProlog没有提供内置的lexLeq约束(尽管这种全局约束存在有效的传播算法),所以我正在尝试编写自己的并按以下方式表达排序二进制约束: X1 #=< Y1, (X1 #= Y1) #=> ...
我用b-prolog版本8.1的表格功能做了一些实验,并且对我观察到的性能感到非常惊讶。 这是我使用的代码。 它计算将一些正整数I减少到1所需的Collatz步数N : 要确定从I0到I所有整数所需的最大减少步数: 当我运行一些查询?- time(i0_i_maxSt ...
是否有一种解决方法可以确保sure_loaded / 1在B-Prolog中工作,就像在其他许多Prolog系统中一样? 目的是要有一个序言,以便其余代码可以使用sure_loaded / 1,而与我是否使用哪个Prolog系统无关。 似乎它无法像许多Prolog系统一样解析当前查询 ...
可以直接在一个术语上附加一个数字吗? 即,我可以轻松做到这样的事情: 但是有没有办法(操作员?)在C = A + B指定一些东西而不是'+'来得到“C = 1 + 23”? 我觉得我要求一些奇怪的东西,所以这里是背景。 我有一个数字列表,我想生成所有可以通过在数字之间加“+ ...
B-Prolog有逻辑循环。 例如,这就是我们如何计算[1,2,3]的总和: 但是当我尝试两个带累加器的嵌套循环时,我得到错误: 另一个变体,不包括外部循环的局部变量列表中的Sb: 是否有可能在B-Prolog中使用带累加器的嵌套循环? 我的B-Prolog版本是 ...
我正在尝试制作类似于minesweeper的游戏,我需要检查地图中一个正方形的邻居,但是我在for循环中遇到语法错误,我正在使用SWI-Prolog 我不是说循环正确吗? 或如何在X-1和X + 1之间循环? ...
这是一个程序,应该找出谁与约翰兼容。 我是Prolog的新手。 为了让Prolog知道,例如。 met(X,Y)= met(Y,X)已编写了大量代码。 现在,当我开始查询 它进入无限循环...... 源代码: 我一直在研究这么多,但我仍然不明白这是什么问题,以及如何 ...
从标准输入中读取B-Prolog中的一个或多个以空格分隔的数字(不带句号)的最简单方法是什么? 例如,对于ECliPse,我编写了这些简单的谓词(我不需要错误处理): 但是为B-Prolog编写这样的内容对我来说太复杂了-没有read_token或split_string ... ...
BProlog的文档中提到:“ B-Prolog具有与C的双向接口,通过它Prolog程序可以调用用C编写的函数,C程序也可以调用Prolog。使用该接口的C程序必须包含文件” bprolog.h”在$ BPDIR / Emulator目录中。” 我找不到bprolog.h,也找不到要链接的库 ...
我最近安装了B-prolog并尝试了这里的CG图形示例http://www.probp.com/ 根据他们的手册,我已经在C:/驱动器中安装了B prolog并且它们正在编译,但没有执行它们。 这是cuba.pl 每当我尝试运行时,我都会收到此错误消息? 这里有什么问 ...