问题标签 [gnu-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 投票
3 回答
24848 浏览

prolog - Prolog - 生成适合给定范围的数字

我想使用如下谓词:

有含义:

如何在 Prolog 中很好地编码(考虑解决方案性能 - 递归深度等)?

解决方案有望在 GNU-Prolog 上运行。

PS 问题的灵感来自这个问题

0 投票
2 回答
387 浏览

prolog - Prolog:如何执行“检查(a++b++c++d 等于 d++a++c++b)-> 是”

让我们定义自定义运算符 - 顺其自然++equals

而事实:

我尝试制作谓词,让它成为check/1,在以下所有情况下都将返回 true:

返回

如何在 Prolog 中实现这一点?(代码片段,请。有可能吗?我错过了什么吗?)

首选 Gnu-Prolog,但也可以接受 SWI-Prolog。

PS请将代码视为“伪代码”草案,不要关心小的语法问题。

PPS '++' 才刚刚开始。我想添加更多运算符。这就是为什么我担心将东西放入列表可能不是一个好的解决方案。

此外

此外,如果可以进行查询,那就太好了(但是,这部分不是必需的,如果您能够回答第一部分,那就太好了)

可能的结果之一(感谢@mat 向其他人展示)

我主要寻找问题第一部分的解决方案 - “是/否”检查。

X,Y 的第二部分将是很好的补充。其中 X,Y 应该是简单的原子。对于上述 X,Y 的示例域,指定:domain(X,[a,b,c]),domain(Y,[a,b,c]).

0 投票
2 回答
639 浏览

prolog - 什么会导致 Prolog 在匹配时成功,但在要求标记输出时失败?

作为学习练习,我正在尝试使用 Prolog 解决逻辑难题,并且我认为我已经使用 GNU Prolog 有限域求解器正确地映射了问题。

当我运行求解函数时,Prolog 会返回:是的,并且变量列表都在 0..1 范围内(布尔值,因为我已经限制了它们)。问题是,当我尝试添加 fd_labeling(Solution) 子句时,Prolog 关于面孔并吐出:不。

我是这种语言的新手,我似乎找不到任何攻击路线来弄清楚为什么一切似乎都有效,直到我真正要求它标记答案......

0 投票
2 回答
1604 浏览

prolog - 保存 GProlog 数据库

在我的程序中,我有一个动态子句,它们工作正常,但是当我关闭我的程序时,它们就消失了。

我试过了

但这行不通。

有没有办法将此数据库保存到文件中?

0 投票
1 回答
375 浏览

gnu-prolog - 简单数学的 Gnu Prolog 段错误

给定以下代码:

当我用 gprolog 运行它时,我得到:

但是,如果我编译文件:

我错过了什么?为什么它在第一种情况下会出现段错误并在第二种情况下运行正常?

(如果有帮助:Mac OS 10.7.2)

0 投票
2 回答
384 浏览

prolog - Prolog 读取复合术语并将其视为表达式

以下代码不起作用

但以下是

这是为什么?似乎“读取”功能无法正常工作

0 投票
1 回答
2543 浏览

database - 简单的 PROLOG 问题:如何针对 Prolog 数据库测试多个查询?

我有一个用于插入所有数据的 Prolog 数据库文件 (test_inserts.p)。

我还有一个 Prolog 查询文件 (test_queries.pl),其中包含我编写的所有 Prolog 查询,以便从我的数据库中接收特定信息。

我想知道在使用 gprolog 时如何对我的 test_inserts.p 数据库文件实际使用 test_queries.pl 查询我希望有一种方法可以同时加载两者,并且能够以某种方式命令运行哪个查询,而不必重新键入我想要运行的每个查询......

0 投票
2 回答
394 浏览

java - 有限域求解器 fd_minimize/2

我需要最小化 Prolog 中的谓词。目前我正在使用 GNU Prolog Java。我有这个事实

它说给定的领土有X军队。现在我想找到给定玩家拥有的最小军队数量。所以我在写:

口译员说:

java.lang.IllegalArgumentException:目标当前未激活

过了一会儿,我发现了问题:http ://www.gprolog.org/manual/gprolog.html#htoc313 我认为问题是解释器的 Java 实现没有 FD 求解器。任何提示/解决方法?

0 投票
1 回答
1012 浏览

prolog - 更改全局堆栈大小,GNU Prolog

所以我在我大学的 bash 服务器上使用 GNU Prolog,我需要增加全局堆栈大小。

我尝试使用以下选项进行编译:

其中 test 只是我为测试而制作的 test.pl 文件。但是,我仍然收到以下异常

这表明大小仍然是 8192 Kb。不幸的是,我正在运行 GNU Prolog 版本 1.2.16,因为那是服务器上的内容,我无法轻易更改它。有什么我可以在这里做的吗?

0 投票
1 回答
1322 浏览

file-io - 在 GNU Prolog 中从文件中读取一行

我觉得我正在用我认为应该很容易的东西把头撞到墙上。也许我的方法是不正确的。我绝对不觉得我理解 Prolog 中 I/O 背后的概念。(例如:流别名和 open/3 绑定的变量有什么区别?)但我跑题了:

如何在 GNU Prolog 中逐行读取文件?(因此无法访问 SWI 拥有的便捷功能。)我认为它与 get_char/1 和 peek_char/1 (检查终止换行符)有关,但我尝试实现可行的解决方案到目前为止都失败了。

据我所知,这是:

将其加载到解释器中,我得到(为了便于阅读,删除了空行):

这些行不一定必须作为字符列表读入,但由于我的目标是在单词列表中搜索符合某些条件的单词(例如,没有重复字母),这似乎是最明智的做法它。