我有一个包含元素的列表:atoms和其他列表。我问以下问题:
- ? totobola([1,X,2,1,X,2,1,X,2,1,X,[1,X],[1,X,2]],LS)。
我希望LS
成为一个列表,我将显示每个原子,然后是给定列表中列表的可能组合。
LS = [1,X,2,1,X,2,1,X,2,1,X,1,1];
LS = [1,X,2,1,X,2,1,X,2,1,x,1,x]中;
LS = [1,X,2,1,X,2,1,X,2,1,X,1,2];
LS = [1,X,2,1,X,2,1,X,2,1,X,X,1];
LS = [1,X,2,1,X,2,1,X,2,1,X,X,X];
LS = [1,X,2,1,X,2,1,X,2,1,X,X,2];
无
我目前的解决方案:
lista([_|_]):- true, !.
lista(_):- false.
totobola([],[]).
totobola([X|T1],[Y|T2]):-
lista(X),
!,
member(Y,X),
totobola(T1,T2).
totobola([X|T1],[X|T2]):-
totobola(T1,T2).
使用lista
我会检查X
是否属于某个列表,但我没有LS=[1,x,2,1,x,2,1,x,2,1,x,1,1];
获得LS = [1, x, 2, 1, x, 2, 1, x, 2|...]
有人可以指导我,或者至少告诉我我做错了什么或更不对劲?
提前谢谢!
答案 0 :(得分:0)
制作'重复'。查询然后按'w'键和'。'您将进入写入模式并查看列表中的所有值。
? - 重复。
true [写] - >按w一次后
是的。 - >输入一个点退出
答案 1 :(得分:0)
我们在ALGAV类,ISEP(葡萄牙)进行了这项练习,解决方案是:
is_list(X) :- var(X), !, fail.
is_list([]).
is_list([_|T]) :- is_list(T).
totobola([],[]).
totobola([H|T],[X|LR]):- is_list(H), !, member(X,H), totobola(T,LR).
totobola([H|T],[H|LR]):- totobola(T,LR).