测试用例
?- decompose([[1,2,8],[3,4],[5,6]], L1, L2).
L1 = [1,3,5], L2 = [[2,8],[4],[6]] ? ;
no
我尝试了另一种实现,但是给出的反馈是效率低下。
实施效率低下
listFirst([], []).
listFirst([H1|T1], [H2|Z]):-
H1 = [H2|_],
listFirst(T1, Z).
listFollowers([], []).
listFollowers([H1|T1], [T2|Z]):-
H1 = [H2|T2],
listFollowers(T1, Z).
decompose(A,L1,L2) :-
listFollowers(A, L2),
listFirst(A, L1).
跟进@findall的先前答案...使用元谓词 maplist/4
怎么样?
list_head_tail([X | Xs],X,Xs)。 分解(Mss,Hs,Ts):- maplist(list_head_tail,Mss,Hs,Ts)。
查询样例:
?-分解([[a,b,c],[d,e,f]],头,尾巴)。 头= [a,d],尾巴= [[b,c],[e,f]]。 α-分解([[1,2,8],[3,4],[5,6]],L1,L2)。 L1 = [1,3,5],L2 = [[2,8],[4],[6]]。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句