prolog中的输出语句

prolog中的输出语句,prolog,Prolog,我试着将像[1,2,3,3,4,5,5,6,6,7]这样的数字列表按递增顺序排序为另外两个列表Unique和NotUnique,这只是为了确定一个数字在列表中出现的次数是否超过一次1将进入唯一列表,3,3将进入非唯一列表 我根据建议进行了更改,但我在排序列表的末尾保留了\u G1678和\u G1708,这些是什么 ?- removeUni([1,2,3,3,4,5,5,5,6],A,B). A = [1, 2, 4|_G1678], B = [3, 3, 5, 5, 5, 6, 6|_G17

我试着将像
[1,2,3,3,4,5,5,6,6,7]
这样的数字列表按递增顺序排序为另外两个列表
Unique
NotUnique
,这只是为了确定一个数字在列表中出现的次数是否超过一次<代码>1将进入
唯一
列表,
3,3
将进入
非唯一
列表

我根据建议进行了更改,但我在排序列表的末尾保留了
\u G1678
\u G1708
,这些是什么

 ?- removeUni([1,2,3,3,4,5,5,5,6],A,B).
A = [1, 2, 4|_G1678],
B = [3, 3, 5, 5, 5, 6, 6|_G1708].
这是我的
removeUni
代码:

removeUni([],[],[]).
removeUni([X],[X],[]).    
removeUni([X1,X2],[X1,X2|Uni],D):-
    X1 < X2,
    !.
removeUni([X1,X2],Uni,[X1,X2|D]):-
    X1 =:= X2,
    !.
    removeUni([X],[X|Uni],D).
removeUni([X1,X2,X3|Q],[X1,X2|Uni],D):-
    X1 < X2,
    X2 < X3,
    removeUni([X3|Q],Uni,D),
    !.
removeUni([X1,X2,X3|Q],[X1|Uni],D):-
    X1 < X2,
    X2 == X3,
    removeUni([X2,X3|Q],Uni,D),
    !.
removeUni([X1,X2,X3|Q],Uni,[X1|D]):-
    X1 == X2,
    X2 == X3,
    removeUni([X2,X3|Q],Uni,D),
    !.
removeUni([X1,X2,X3|Q],Uni,[X1,X2|D]):-
    X1 == X2,
    X2 < X3,
    removeUni([X3|Q],Uni,D),
    !.
removeUni([],[],[])。
removeUni([X],[X],])。
移除Uni([X1,X2],[X1,X2 | Uni],D):-
X1
删除uni([X],[X],[X])。
不正确。如果有一个元素的列表,
[X]
,则
X
是唯一的。所以这应该是
removeUni([X],[X],])。
。而且你根本不应该让
删除Uni([],Uni,D)。
。它说,如果您有一个空列表,那么唯一和非唯一元素的列表就是您喜欢的任何列表。您还说您正在尝试对数字列表进行排序,但您的谓词似乎假定这些数字已经排序。你能澄清一下吗?次要的观察:带有
=:=
的子句应该有一个
来代替
当你得到带有
\u xxx
变量的结果时,这意味着它们是不稳定的。你的第一个子句
removeUni([X1,X2],[X1,X2 | Uni],D)
没有实例化
D
。您可能会收到“singleton variable”警告。您需要注意这些警告并解决它们。