【发布时间】:2019-04-04 10:39:36
【问题描述】:
我正在编写一个使用递归计算列表中数字之间距离的解决方案,但一直在努力获得预期的输出。 我正在尝试将列表列表放入单个列表中,但尝试使用 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],[]].
【问题讨论】:
-
请在问题中包含您的代码,以便我们查看您的尝试
-
对不起,我是在 Stackoverflow 上发布问题的新手,对格式有点困惑。现在应该起来了。谢谢。
-
回滚您删除的代码,因为它特定于问题。您的代码在示例中使用了约束,因此使答案更加具体。通过删除代码,阅读本文的初学者可能会认为约束是必需的,而实际上不是。
-
这能回答你的问题吗? Get elements from list of lists
标签: prolog