问题标签 [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.
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])
.
prolog - 什么会导致 Prolog 在匹配时成功,但在要求标记输出时失败?
作为学习练习,我正在尝试使用 Prolog 解决逻辑难题,并且我认为我已经使用 GNU Prolog 有限域求解器正确地映射了问题。
当我运行求解函数时,Prolog 会返回:是的,并且变量列表都在 0..1 范围内(布尔值,因为我已经限制了它们)。问题是,当我尝试添加 fd_labeling(Solution) 子句时,Prolog 关于面孔并吐出:不。
我是这种语言的新手,我似乎找不到任何攻击路线来弄清楚为什么一切似乎都有效,直到我真正要求它标记答案......
prolog - 保存 GProlog 数据库
在我的程序中,我有一个动态子句,它们工作正常,但是当我关闭我的程序时,它们就消失了。
我试过了
但这行不通。
有没有办法将此数据库保存到文件中?
gnu-prolog - 简单数学的 Gnu Prolog 段错误
给定以下代码:
当我用 gprolog 运行它时,我得到:
但是,如果我编译文件:
我错过了什么?为什么它在第一种情况下会出现段错误并在第二种情况下运行正常?
(如果有帮助:Mac OS 10.7.2)
prolog - Prolog 读取复合术语并将其视为表达式
以下代码不起作用
但以下是
这是为什么?似乎“读取”功能无法正常工作
database - 简单的 PROLOG 问题:如何针对 Prolog 数据库测试多个查询?
我有一个用于插入所有数据的 Prolog 数据库文件 (test_inserts.p)。
我还有一个 Prolog 查询文件 (test_queries.pl),其中包含我编写的所有 Prolog 查询,以便从我的数据库中接收特定信息。
我想知道在使用 gprolog 时如何对我的 test_inserts.p 数据库文件实际使用 test_queries.pl 查询?我希望有一种方法可以同时加载两者,并且能够以某种方式命令运行哪个查询,而不必重新键入我想要运行的每个查询......
java - 有限域求解器 fd_minimize/2
我需要最小化 Prolog 中的谓词。目前我正在使用 GNU Prolog Java。我有这个事实
它说给定的领土有X军队。现在我想找到给定玩家拥有的最小军队数量。所以我在写:
口译员说:
java.lang.IllegalArgumentException:目标当前未激活
过了一会儿,我发现了问题:http ://www.gprolog.org/manual/gprolog.html#htoc313 我认为问题是解释器的 Java 实现没有 FD 求解器。任何提示/解决方法?
prolog - 更改全局堆栈大小,GNU Prolog
所以我在我大学的 bash 服务器上使用 GNU Prolog,我需要增加全局堆栈大小。
我尝试使用以下选项进行编译:
其中 test 只是我为测试而制作的 test.pl 文件。但是,我仍然收到以下异常
这表明大小仍然是 8192 Kb。不幸的是,我正在运行 GNU Prolog 版本 1.2.16,因为那是服务器上的内容,我无法轻易更改它。有什么我可以在这里做的吗?
file-io - 在 GNU Prolog 中从文件中读取一行
我觉得我正在用我认为应该很容易的东西把头撞到墙上。也许我的方法是不正确的。我绝对不觉得我理解 Prolog 中 I/O 背后的概念。(例如:流别名和 open/3 绑定的变量有什么区别?)但我跑题了:
如何在 GNU Prolog 中逐行读取文件?(因此无法访问 SWI 拥有的便捷功能。)我认为它与 get_char/1 和 peek_char/1 (检查终止换行符)有关,但我尝试实现可行的解决方案到目前为止都失败了。
据我所知,这是:
将其加载到解释器中,我得到(为了便于阅读,删除了空行):
这些行不一定必须作为字符列表读入,但由于我的目标是在单词列表中搜索符合某些条件的单词(例如,没有重复字母),这似乎是最明智的做法它。