【发布时间】:2016-11-10 22:33:34
【问题描述】:
我有一个奇怪的问题,我不知道如何解决。
我编写了一个谓词,它通过删除重复项来压缩列表。
所以如果输入是[a,a,a,a,b,c,c,a,a],输出应该是[a,b,c,a]。我的第一个代码有效,但项目顺序错误。所以我添加了一个append/3 目标,它完全停止了工作。
不知道为什么。我试图跟踪和调试,但不知道出了什么问题。
这是我的代码,它可以工作,但商品顺序错误:
p08([Z], X, [Z|X]).
p08([H1,H2|T], O, X) :-
H1 \= H2,
p08([H2|T], [H1|O], X).
p08([H1,H1|T], O, X) :-
p08([H1|T], O, X).
这是较新的版本,但它根本不起作用:
p08([Z], X, [Z|X]).
p08([H1,H2|T], O, X) :-
H1 \= H2,
append(H1, O, N),
p08([H2|T], N, X).
p08([H1,H1|T], O, X) :-
p08([H1|T], O, X).
【问题讨论】:
-
我建议使用
dif/2代替(\=)/2