gpt4 book ai didi

list - Prolog:列表中不存在元素

转载 作者:行者123 更新时间:2023-12-04 06:27:24 25 4
gpt4 key购买 nike

我需要在列表中找到元素位置(作为内置谓词第 n​​ 个,但这里第一个元素的索引为 1)。但是,如果没有,我还需要像“元素不存在”这样的输出。
我尝试了一个不太优雅的解决方案,为计数器分配一个很大的值。
但这不是正确的解决方案!!!
恐怕这很容易,但我找不到其他解决方案!!!

任何人都可以帮助我吗?

search(L):-
write('searching for: '),read(E),find(L,E,Pos),
out(L,E,Pos),!.

out(E,Pos):-
Pos < 10000,
write('element '),write(E),write(' is in position n. '),write(Pos),!.

out(E,Pos):-
Pos > 10000,
write('Element '),write(E),write(' is not present!'),!.

find([X|Xs],E,Pos):-
X \= E,
find(Xs,E,Pos1),
Pos is Pos1 + 1.
find([],_,10000).
find([X],X,1).
find([X|_],X,Pos):-
Pos is 1,!.

最佳答案

你想要的更多是这样的:

search(L):-
write('searching for: '),read(E),
finde(E).

finde(E) :-
find(L,E,Pos), % find succeeds
out(L,E,Pos),!. % and prints, cut ensures we don't try next clause

finde(E) :- write('Element '),write(E),write(' is not present!'),!. % called if not found

这样你就不需要一个奇怪的 find 子句,它总是在大数字上成功。就让它失败吧。

关于list - Prolog:列表中不存在元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5872790/

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