gpt4 book ai didi

prolog - 如何计算列表中元素的索引?

转载 作者:行者123 更新时间:2023-12-04 03:40:57 25 4
gpt4 key购买 nike

我开始玩 prolog,而且有 Java 背景,这对我来说真的很难,所以这是一个愚蠢的问题:

您将如何编写一个能够给出给定列表中给定元素的索引的 indexOf 谓词?

我的第一个问题是关于谓词 arity:我想它应该是 3,例如:

indexOf(List,Element, Index) :- ......

我对吗 ?可能这已经存在于内置库中,但我想学习如何编写它。谢谢你的帮助。

最佳答案

您可以递归执行:假设基于 0 的索引(否则只需将第一个子句中的 0 更改为 1)

indexOf([Element|_], Element, 0). % We found the element
indexOf([_|Tail], Element, Index):-
indexOf(Tail, Element, Index1), % Check in the tail of the list
Index is Index1+1. % and increment the resulting index

如果您只想找到第一个出现,您可以添加一个剪切 (!) 以避免回溯。
indexOf([Element|_], Element, 0):- !.
indexOf([_|Tail], Element, Index):-
indexOf(Tail, Element, Index1),
!,
Index is Index1+1.

关于prolog - 如何计算列表中元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4380624/

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