gpt4 book ai didi

prolog - SWI-Prolog 条件语句

转载 作者:行者123 更新时间:2023-12-02 09:21:17 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来测试单词 hello 是否包含在列表中。如果包含它,我不希望它说“true”,我希望它说:“是的,这里包含“hello”这个词”,有什么想法吗?

这是我的代码:

contains_hello([hello|_]).
contains_hello([Head|Tail]):- Head \= hello, contains_hello(Tail).

最佳答案

从您的代码中可以清楚地看出,您只想打印消息一次。目前,您可以通过将 Head\= hello 添加到第二个子句来解决此问题。这不是人们通常在 Prolog 中解决这个问题的方式。

请注意,您的第二个子句恰恰排除了第一个子句所匹配的情况。因此,在第一个子句中剪切要方便得多。这将停止回溯。即,如果第一个子句匹配,则不会考虑第二个子句。

剪切由感叹号 (!) 表示。因此:

contains_hello([hello|_]) :-
write('yes, the word hello is contained here'), nl, !.

contains_hello([_|T]) :- contains_hello(T).

关于prolog - SWI-Prolog 条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1749832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com