将列表作为两个列表的连续并集
Make a list as the consecutive union of two lists
我正在尝试做一个谓词 unionlist(union,list1,list2),其中 "union" 是形成的列表作为 "list1" 和 "list2" 的并集。此列表不能为空。
例如:
unionlist(L,[a,b],[c,d]).
输出应该是:
L=[a,b,c,d]
另一个例子:
unionlist([a,b],L1,L2).
输出应该是:
L1=[a],L2=[b] ;
no
请帮忙。谢谢!
追加后只需要检查两者是否非空即可,
unionlist(Union, L1, L2) :-
append(L1, L2, Union),
length(L1, Len1),
Len1 > 0,
length(L2, Len2),
Len2 > 0.
[编辑] - 在开头追加,以便可以反向使用谓词
我正在尝试做一个谓词 unionlist(union,list1,list2),其中 "union" 是形成的列表作为 "list1" 和 "list2" 的并集。此列表不能为空。
例如:
unionlist(L,[a,b],[c,d]).
输出应该是:
L=[a,b,c,d]
另一个例子:
unionlist([a,b],L1,L2).
输出应该是:
L1=[a],L2=[b] ;
no
请帮忙。谢谢!
追加后只需要检查两者是否非空即可,
unionlist(Union, L1, L2) :-
append(L1, L2, Union),
length(L1, Len1),
Len1 > 0,
length(L2, Len2),
Len2 > 0.
[编辑] - 在开头追加,以便可以反向使用谓词