gpt4 book ai didi

list - Prolog - 元素索引

转载 作者:行者123 更新时间:2023-12-04 18:17:22 30 4
gpt4 key购买 nike

我必须在列表中找到给定元素的所有索引并将其作为列表返回。例如:

?- indexList(a,[a,b,c,a,b],Rs).
Rs = [0,3]

我的想法是:
positions( E, L, P ) :- positions( E, L, 0, Rs ).
positions( E, [], _, [] ).
positions( E, [E|Xs], P, [P|PT] ) :- P1 is P + 1, positions( E, Xs, P1, PT ).
positions( E, [X|Xs], P, PT ) :- P1 is P+1, positions( E, Xs, P1, PT ).

当我跟踪这个时,我得到一个列表,其中每个位置都在其中(在最后一步之前的步骤中)。但是在最后的步骤中,他以某种方式对其进行了更改并返回了真值。

最佳答案

你的问题是,而不是使用 Rs返回您正在使用的职位列表P .
您应该在 positions/3 中看到 lint 警告(单变量 P 和 Rs)。那应该警告你这一点。

此外,在 positions/4 的第三个子句中您应该检查 E 是否不同于 X:

positions( E, L, Rs ) :- positions( E, L, 0, Rs ).
positions( E, [], _, [] ).
positions( E, [E|Xs], P, [P|PT] ) :- P1 is P + 1, positions( E, Xs, P1, PT ).
positions( E, [X|Xs], P, PT ) :- E\=X, P1 is P+1, positions( E, Xs, P1, PT ).

关于list - Prolog - 元素索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11417238/

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