sicstus-prolog相关内容
我正在尝试为广义斐波那契数列 (GFS) 的查询找到解决方案.问题是:是否有任何 GFS 的第 12 个数字为 885?前 2 个数字可能被限制在 1 到 10 之间. 我已经找到了在从 (1, 1) 开始的序列中找到第 N 个数字的解决方案,其中我明确定义了初始数字.这就是我所拥有的: fib(1, 1).纤维(2, 1).纤维(N,X):-N#>1、Nmin1 #= N - 1,Nmi
..
我正在尝试解决 prolog 中的约束处理问题. 我需要在 10x10 的网格中打包 4 个 5x5、4x4、3x3 和 2x2 的正方形.它们不能重叠. 我的变量如下所示: 名称:SqX(i),i=1..10,域:1..10 其中 X 为 5、4、3 或 2.索引 i 表示网格中的行,域表示网格中的列. 我的第一个约束尝试定义正方形的宽度和高度.我这样表述: 约束:SqX
..
我如何确保所有模块(最好还有所有其他已加载或包含的文件)都是最新的?发出 use_module(mymodule) 时,SICStus 会比较文件 mymodule.pl 的修改日期并重新加载它(如果更新).此外,include-ed 文件将触发重新编译.但它不会重新检查 mymodule 使用的所有模块. 简而言之,我怎样才能获得与 SWI 通过 make/0 提供的类似的功能? 解
..
我有一个像 'id1,id2,id3' 这样的原子,我想把它分成列表与 SWI 中的谓词 atomic_list_concat/3 相同. 预期结果 ?- atomic_list_concat(L, ',', 'id1,id2,id3').L = [id1, id2,id3]?- atomic_list_concat([id1,id2,id3], ',', A).A = 'id1,id2,
..
我正在进行一些实验,以比较 Sicstus Prolog 中的不同标记启发式方法. 但我不断进入“资源错误:内存不足". 我很确定我在测试代码中做错了什么. 以下代码将复制我的问题: :- use_module(library(clpfd)).:- use_module(library(lists)).证明(R,C):-X 是 R * C,长度(M,X),域( M, 0, X)
..
我正在尝试将约束 global_cardinality 添加到我的程序和 SICStus Prolog 手册 是这样写的: global_cardinality(+Xs,+Vals) global_cardinality(+Xs,+Vals,+Options) 其中 Xs = [X1,...,Xd] 是整数或域变量的列表,并且Vals = [K1-V1,...,Kn-Vn] 是一
..
我正在使用 SICStus Prolog 编写 Dali 代理,我需要将原子转换为术语,但我无法使用 SWI-Prolog 中内置的 atom_to_term 解决方案 使用 library(codesio): |?- use_module(library(codesio)).是的?- set_prolog_flag(double_quotes,codes).真的.|?- read_fr
..
我正在解决使用 cumulatives/[2,3] 谓词的问题.但是当我尝试将其与 labeling 中的 minimize 结合使用时,我的性能非常差 我有以下演示.10 个任务,所有持续时间为 1,4 台机器,所有容量=1.我的目标是最小化总时间,即 minimize(maximum(Es)): :- use_module(library(clpfd)).:- use_module(li
..
属性变量允许扩展统一.以下是关于界面的神秘细节.让我们切入正题! 在 sicstus-prologlibrary(atts) 提供使用属性变量的谓词.我想我明白了 SICStus Prolog 用户手册图书馆页面(atts) 说,除了关于 verify_attributes(-Var, +Value, -Goals) 的一个细节: [...] verify_attributes/3 在
..
我的一些 Prolog 程序可以相当获利,如果我可以用它们替换基于所有(is)/2的整数算法clpfd 对应. 所以我想要力量......使用 clpfd ...所以我可以用 clpfd-y 替换 X is 10^3 :) 考虑以下五个支持 clpfd 的 Prolog 处理器: GNU Prolog 1.4.4 ?- X #= 10^3.未捕获的异常:error(type_e
..
我正在开发一个小型 prolog 应用程序来解决 摩天大楼和围栏 拼图. 未解之谜: 已解决的难题: 当我通过程序已经解决的谜题时,它很快,几乎是即时的,为我验证它.当我通过程序非常小的谜题(例如2x2,当然,修改规则)时,找到解决方案也相当快. 问题在于计算“本机"大小为 6x6 的拼图.在中止它之前,我已经让它运行了 5 个小时左右.太多时间了. 我发现耗时最长的
..
我正在尝试为广义斐波那契序列(GFS)上的查询找到一种解决方案.查询是:是否有第12个数字为885的GFS?最初的2个数字可能限制在1到10之间. 我已经找到了一种解决方案,可以从以(1,1)开始的序列中找到第N个数字,在该序列中我明确定义了初始数字.这是我要的: fib(1,1).fib(2,1).fib(N,X):-N#>1,Nmin1#= N-1,Nmin2#= N-2fib(Nm
..
有许多调度问题.我正在调查一个问题 我有一些工作/任务的家庭,从一个家庭过渡到另一个家庭 需要重新配置机器(设置时间). 我正在使用cumulatives[2/3]解决此问题,但是我不确定设置时间如何 可以表达出来. 在这个小例子中,我有10个任务,分别属于3个不同的家族.任何任务都可以在任何计算机上运行,但是从一个系列中的一个任务切换到另一系列中的另一任务需要添加设置时间.
..
我希望定义一个谓词powerset(X,P),当P是X的幂集时为true.无论P是否为接地,都应起作用. 解决方案 由于您使用SICStus Prolog,因此可以使用库(列表)中的subseq0(+ Sequence,?SubSequence),“当SubSequence是以下子序列时,这是正确的"序列,但也可以是序列本身"(引自手册 http://www.sics.se/sicstus
..
如何确保所有模块(以及理想情况下,所有其他已加载或包含的文件)都是最新的?发出use_module(mymodule)时,SICStus会比较文件mymodule.pl的修改日期并重新加载(如果较新). include -ed文件也将触发重新编译.但是它不会重新检查mymodule使用的所有模块. 简而言之,我如何获得与SWI make/0提供的功能类似的功能? 解决方案 SICSt
..
我无法将事实插入到现有的Prolog文件中,而不会覆盖原始内容。 假设我有一个文件test.pl: : - 动态出生/ 2。 出生(约翰,伦敦)。 出生(tim,曼彻斯特)。 如果我在prolog中加载,并且我断言更多的事实: | ?(assert(born(laura,kent))。 是 我知道我可以通过以下方式保存:
..
我试图在prolog中解决约束处理问题。 我需要在10x10的网格中打包5x5,4x4,3x3和2x2的4个正方形。 它们不能重叠。 我的变量如下所示: 名称:SqX(i),i = 1..10,domain:1..10 其中X是5,4,3或2.索引i表示行,网格中的列。 我的第一个约束尝试定义正方形的宽度和高度。我如此规定: 约束:SqX(i
..
现在,我正在学习如何连接SICStus的Prolog用C code。 我想有/使用/看C实现任意大小的整数的“汉明权”的序言SICStus版本4。 在我看来,我需要进行测试条款类型的C函数(SP_is_integer)和C函数访问Prolog的条款(SP_get_integer,SP_get_integer_bytes)。 不过,我不知道如何在便携,坚固的方式使用SP_get_integer
..