我正在尝试在 swi-prolog 中对数组检索进行编程。使用下面打印的当前代码,我可以检索给定索引处的元素,但我也希望能够检索给定元素的索引[es]。
aget([_|X],Y,Z) :- Y \= 0, Y2 is (Y-1), aget(X,Y2,Z).
aget([W|_],Y,Z) :- Y = 0, Z is W.
示例 1:aget([9,8,7,6,5],1,N) {检索索引 1 处的元素 8} 输出:N = 9。{正确}
示例 2:aget([9,8,7,6,5],N,7) {检索元素 7 的索引 2} 输出:false {不正确}
我理解它的方式是 swi-prolog 将以这种方式工作,几乎不需要额外的编程。很明显我做错了什么。如果您能指出我正确的方向或告诉我我做错了什么,我将不胜感激。