我正在编写一个解决方案,使用递归计算列表中数字之间的距离,但一直在努力获得预期的输出。
我试图将列表列表放入单个列表中,但尝试使用 flatten 和append/2 不起作用。我已经尝试了几个小时,并且一直在兜圈子,有人可以告诉我我做错了什么吗?
:- use_module(library(clpfd)).
difference([],_,[]).
differwnce([L|Ls],X,[DST|Ds]) :-
DST #= abs(X - L),
difference(Ls,X,Ds).
differences[],[]).
differences([L|Ls], [DST|Tail]) :-
difference(Ls,X,DST),
differences(Ls, Tail).
这是预期的输入和输出:-
?- differences([1,2,4,9],Ds).
Ds = [1,3,8,2,7,5].
电流输出:
Ds = [[1,3,8],[2,7],[5],[]].