本文介绍了将列表作为两个列表的连续并集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试做一个谓词 unionlist(union,list1,list2),其中 union" 是作为 的并集形成的列表list1"list2".此列表不能为空.

i'm trying to do a predicate unionlist(union,list1,list2), where "union" is the list formed as the union of "list1" and "list2". This lists cannot be empty.

例如:

unionlist(L,[a,b],[c,d]).

输出应该是:

L=[a,b,c,d]

另一个例子:

unionlist([a,b],L1,L2).

输出应该是:

L1=[a],L2=[b] ;
no

请帮忙.谢谢!

推荐答案

你只需要在追加后检查两者是否为非空,

You just need to check if both are non-empty after appending them,

unionlist(Union, L1, L2) :-
    append(L1, L2, Union),
    length(L1, Len1),
    Len1 > 0,
    length(L2, Len2),
    Len2 > 0.

- 附加在开头,以便谓词可以反向使用

- append in the beginning, so that the predicate can be used in reverse

这篇关于将列表作为两个列表的连续并集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-10 22:30