gpt4 book ai didi

序言搜索列表

转载 作者:行者123 更新时间:2023-12-04 05:02:14 26 4
gpt4 key购买 nike

在下面的代码中,我试图搜索一个列表,如果列表中有匹配项,则打印“匹配”,如果没有匹配项,则打印“不匹配”。如果匹配,我的代码会打印“匹配”,但如果不匹配,则不会打印“不匹配”,而是返回 false。如果列表中没有匹配项,如何更改我的代码以打印“不匹配”?谢谢

    on(Item,[Item|_], X) :- X is 1.
on(Item,[_|Tail],X):- on(Item,Tail,X).

check(X,Y) :- on(X,Y,Z), (Z == 1, write('match');write('no match')).

最佳答案

您需要添加一个子句来捕获 on 时的情况。到达列表末尾:

on(_, [], X) :- X is 0.

但是,为了使这项工作起作用,您需要放置一个剪切运算符, ! , 进入匹配 on子句,因此它不会继续并找到空列表匹配子句:
on(Item,[Item|_], X) :- X is 1, !.

此外,看起来您的打印代码没有按照您的意愿行事,我认为它应该是这样的:
(Z == 1 -> write('match'); write('no match')).

(注意那里的 ->)。我并不肯定这是正确的,但我必须对其进行更改才能使其在我的设备上正常工作。

最后,为了让你的代码看起来更漂亮一点,你可以把 X is 0X is 1东西到谓词本身,所以它变成:
on(_, [], 0).
on(Item, [Item|_], 1) :- !.

关于序言搜索列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16007350/

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