我正在尝试编写一个order(List,Result)具有Listas输入的过程并返回Result有序对的列表,这样:
例:
如果List = [a,b,c,d],程序顺序(List,Result)输出列表:
Result = [(1,a), (2,b),(3,c),(4,d)].
我正在与列表中的货币对的位置挣扎.我做过如下尝试:
increment(Accum,Total):-
Total is Accum + 1.
order([],[]).
order([Head|Tail],Result):-
order(Tail, NewTail),
NewCount is Count + 1,
increment(NewCount,Count),
Result = [(Count,Head)|NewTail].
Run Code Online (Sandbox Code Playgroud)
请帮助任何人?
这两个分句:NewCount is Count + 1与increment(NewCount,Count)基本具有相同的含义.你没有说清楚它Count是一个输入变量,并且它有一个基本情况1,所以Prolog不知道从哪里开始统一它的值.例如,您应该使用Count如下的输入参数(与您的版本相比,它不会有太大变化):
order([],[], _).
order([Head|Tail],[(Count,Head)|NewTail], Count):-
NewCount is Count + 1,
order(Tail, NewTail, NewCount).
order(List, Result ):- order(List, Result, 1).
Run Code Online (Sandbox Code Playgroud)