我必须在列表中找到给定元素的所有索引并将其作为列表返回。例如:
?- 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 ).
当我跟踪这个时,我得到一个列表,其中每个位置都在其中(在最后一步之前的步骤中)。但是在最后的步骤中,他以某种方式对其进行了更改并返回了真值。