问题标签 [prolog-toplevel]
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 点是否存在路径。
问题是它返回真,然后是假。虚假从何而来?
prolog - 在序言中分句搜索
我有一个列表 L 创建为:
现在我想使用成员函数在 L 中搜索一个原子。我试过了 :
我在这里做错了什么?
prolog - 序言 - 失败;真的
我的代码在这里有一些问题。假设我有一个这样的知识库:
然后我这样称呼它:(忽略 checkC(Country)/checkC(_))
我的问题是,为什么如果用户输入一个不在知识库中的随机国家名称,write('Country not found')不会出来,我发现它与失败有关;真的。
有什么帮助吗?
prolog - 谓词打印出“意外”错误
我正在尝试以likes/2
如下方式编写谓词 , :
这是我解决问题的方法:
现在,我面临的问题是,虽然我的程序按预期运行,但在大多数情况下,它最后打印出一个错误,我不明白为什么。这是完整的输出:
prolog - 接受 2 种不同的颜色,但颜色不同
我正在尝试一个练习,我必须编写如下运行的谓词colors/2
(或colors(C1,C2) :-
...):
所以,本质上,我必须以一种当你输入相同颜色两次时它不接受的方式来编写我的谓词。
我将我的事实定义为:
我正在使我的谓词成为:
我不明白为什么我的谓词不起作用。它返回一个带有“Operator Expected”的语法错误。我是说你写事实的顺序并不重要。意思是,您可以说颜色(红色,蓝色)或颜色(蓝色,红色),但是如果不返回 false,则无法查询具有相同名称的颜色。
我想知道:
- 为什么这不是一个有效的表达式。
- 我能做些什么来解决这个问题。
prolog - 查询数据库的成功与失败
所以我坚持我一直在做的一个练习。我有以下事实:
这意味着 appleseed1 来自 appleseed0,apple1 来自 appleseed0,等等。我遇到的问题是,如果值被切换,我需要它打印出 false。意思是,我希望查询在查询时产生“真” seed(appleseed0, apple1)
,然后在查询顺序相反时产生“假”,例如seed(apple1, appleseed0).
现在,我的谓词看起来像这样:
我知道这就是为什么我的查询无论顺序如何都返回真实的原因,但我唯一的另一个想法是:
但我不能那样写它,因为这会使它成为一个没有错误的无限循环。我怎样才能做到这一点,以使查询在显示为“真”时显示为“真”,而在显示为seed(appleseed2, apple2)
“假”时显示为“假” seed(apple2, appleseed2)
?
prolog - 如何在 prolog 中更改“write_options”以打印长列表?
默认情况下,SICStus Prolog 将仅显示列表的前十个元素(之后显示...
)。
你如何让 Prolog 显示一个长列表的所有元素?我努力了:
但我收到了消息
prolog - 如何从 swi-prolog 查询中只获得一个输出?
如何从 SWI-Prolog 查询中只获得一个输出?我曾尝试使用 cut ( !
) 但它似乎不起作用。
例如:我已经用陈述填充了我的知识库,我想找到任何一个既是女性又是某人母亲的名字。
我已经尝试过:
...但这给了我所有的X-__
和Y-__
我也试过:
...但这仍然给了我X-__
和Y__
我只想找到X
. 有没有人有任何提示让我以某种方式只得到一个?
prolog - Prolog 不会“返回”真或假
我有一个小问题。我得到了一个 Prolog 查询,它“返回”我想要的值,但作为第二个值,我希望它返回 true 或 false。我的其他查询都可以正常工作,但这个不行。
这就是我得到的:
这就是我需要的:
我希望你能帮助我。谢谢!
编辑:
Prolog代码:在知识库中查找所有特征结构记录(在prolog中表示为列表[attribute:value,attribute:value,...]),并“返回”大于OldEvent或OldEvent的最小记录如果没有更小的值。
如果没有 OldEvent(OldEvent 的值为:“unknown”),则只需获取最新的特征结构记录。
我也不满意OldEvent = "unknown"
,如何检查OldEvent
是普通字符串还是列表?
prolog - 为什么有些 prolog 谓词会自动“结束”,而有些则要求我按 enter/'。再次?
我正在使用 SWI-Prolog,当我尝试运行我编写的一些谓词时,它们会自动在我的答案末尾加上句号,然后直接进入下一行。虽然有些人要求我自己按 Enter 键或将句号放在那里。为什么是这样?
这是我需要“手动”按 Enter 或“。”的示例。最后,如果我按“;”,它也会返回 false。但我不明白为什么它会返回错误。