问题标签 [sicstus-prolog]

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.

0 投票
2 回答
231 浏览

prolog - 如何指定变量域中值的自定义顺序?

假设我有一个变量V,并且值V可以是 range 中的任何数字0..5。但是,某些值比其他值更受欢迎,因此它将帮助我将域指定V为有序序列。

我可以在 SICStus Prolog 中执行此操作吗?

例子:

我阅读了手册,但没有找到任何有用的东西。我可以通过自定义标签来解决问题(即,将 V 的域转换为列表,对其进行排序并将值分配给V),但我预计性能会更差。

0 投票
1 回答
1090 浏览

json - 在烧瓶 0.9 中解析 json 请求

(对于任何后端开发,我都是一个完整的初学者,所以如果任何术语使用错误,我深表歉意)

我有一些控制画布游戏的 javascript,并且我有一个可以解决游戏的序言规划器。我现在正在尝试连接两者并设置了一个烧瓶服务器,它可以成功调用 prolog,获取正确的计划并将其发送回 javascript。我真的很难从 javascript 中获得正确的输入。

Javascript:

烧瓶服务器

我已经看到有关此的其他问题,实际上我发布的尝试来自flask request.json order,但我不断收到 400(错误请求)。我猜从那以后烧瓶改变了?我知道它正确发送了 json,因为如果我不尝试触摸它,我会在浏览器中收到成功消息,所以纯粹是我无法访问它的字段或找到任何示例。

0 投票
1 回答
246 浏览

prolog - 使用变量(Sel)和值(枚举)的 Sicstus Prolog 自定义标签

假设我将以下域变量列表传递给标签谓词:

对于变量(Sel):此外,我希望标签可能首先选择所有 Y,然后再继续 X。或者更复杂:从 X 或 Y 开始,如果与 Y 相比有更多未标记,则继续标记 X,反之亦然。

对于值(枚举):更复杂的是,我可能希望根据它是 X 还是 Y 来使用不同的策略。

我的第一次尝试是使用属性变量并向每个变量添加更多信息:

并且内部变量(Sel)和值(Enum)我可以通过使用这个属性来搜索和选择。

但是由于 fd_var 已经是一个属性变量,因此这种尝试效果不佳。

所以我的问题是:使用属性变量是解决此类任务的正确策略吗?有没有其他方法可以做到这一点?

这只是一个简化的例子。我需要大约 10 种不同的变量类型,而不仅仅是这里显示的两种。

0 投票
1 回答
148 浏览

prolog - clpfd 和 fdbg 的使用

我有以下使用 clpfd 的 Prolog 代码:

如果我运行 go/2 谓词,它会按预期工作:

但是,如果我现在启用 fdbg-debugger,我不会得到 Y 的值:

这是 fdbg 库中的错误还是我做错了什么?

0 投票
2 回答
201 浏览

prolog - 如何使用 clpfd:automaton 限制 SICStus Prolog 中的计数器值?

我想实现一个非常简单的自动机,它限制一和零列表中连续 1 的数量(例如 [0,1,1,0,1,1,1])。

我的自动机看起来像这样:

如何将C指定计数器的约束添加C <= Allowed到上面的 Prolog 代码中?

0 投票
0 回答
201 浏览

stream - Prolog 错误:“预期的流,但找到 '$stream' ...”

我正在开发一个大学作业程序,目前我正试图从一个写在文件上的绑架程序中写一些否认作为完整性约束,但我遇到了一些问题。

我的任务谓词如下所示:

他们会通过以下方式进行查询:

问题是,如果我将它们放在一个单独的文件中(使用这些谓词而不是其他任何东西),它们似乎可以工作,但是当在程序中使用时(我无法在此处发布的 3000 行 Prolog ......)我明白了错误:

我检查了,我可以确认谓词没有被覆盖......我真的不明白这是怎么发生的。

非常欢迎任何关于我可能出错的地方的建议或线索!

非常感谢,大卫。

0 投票
1 回答
96 浏览

eclipse - 如何在 SICTUS 的“SPIDER”IDE 中显示变量绑定?

我正在使用“SPIDER”IDE 进行 SICSTUS Prolog 开发,按照 SIICSTUS 手册和 SPIDER IDE 本身的文档的说明。调试时,在“SIICSTUS 调试”透视图中,变量不会显示在“变量”窗口中,如此处所示图像的右上角所示(这是 Spider 页面中的第一件事)

我根据本指南设置了所有内容,据我所知,这是唯一不起作用的。调试时是否有任何额外的步骤来获取变量绑定?

提前致谢,

编辑:我最近在格式化驱动器后重新安装了同一系统中的所有内容,现在它可以正常工作了。我不知道是什么,但我认为我第一次做错了什么。

0 投票
1 回答
104 浏览

c - 从 C 创建序言列表

我有一个 C 程序作为 Sicstus Prolog 运行时的前端。我正在尝试在 C 中创建一个列表,将其填写并传递给 Prolog 运行时。我已经查看了 C 库,但我没有找到任何有关如何执行此操作的信息。我想这不是一个单独的函数调用,而是一个组合(?)

我还看到 C 库中有几个与此相关的函数调用,例如(SP_put_list()、SP_put_list_codes()、SP_put_list_n_bytes()、SP_put_list_n_codes())

我要创建的列表是传递给 labeling/2 的选项列表,例如 [leftmost,step,up,all],但我想在运行时创建并填写此列表,并将其传递给 Sicstus Prolog。

0 投票
2 回答
172 浏览

prolog - 如何在 SICStus Prolog 中恢复使用 copy_term/3 收集的约束?

文件说

copy_term(+Term, -Copy, -Body)制作一个副本,Term其中所有变量都已被新变量替换,这些新变量在新创建的术语之外无处出现。如果Term包含属性变量,Body则与一个术语统一,以便执行Body 将恢复 中变量的等效属性Copy

我之前确认了对某些变量的数值 CLP(R) 约束,并且在某些时候我使用 copy_term/3 收集这些约束。后来,当我尝试使用'call(Body)'恢复约束时,我在表单的参数中得到一个“实例化错误”[nfr:resubmit_eq(...)]

这是一个演示问题的简化示例:

结果是:

我的问题是:如何恢复Bodyover的约束New?我一直找不到具体的例子。

0 投票
2 回答
217 浏览

swi-prolog - SWI/CLP(FD) 中的可达性约束

我试图通过解决节点和弧的存在约束来确定有向图的形状,例如,二进制变量V1V21是否存在从节点V1到的弧V2。我想表达可达性约束(或者,找到一个传递闭包),例如,要求图是连接的,或者有一条从一个给定节点到另一个给定节点的路径。

我已经看到 SICStus Prologfd_closure用于此目的,但我在 SWI Prolog 中找不到类似的东西。我应该使用CHR吗?我一直在查看弧/路径一致性示例,但我不确定我是否在寻找正确的方向。