level 13
丁兔
楼主
不知道又是什么敏感*词惹了度凶,可能是wei信,重发一遍 @kun小宝
题目要求:
interleave(Ls,L). Ls是多个列表组成的列表,且各个列表长度相同,如[ [1,2],[3,4] ]。
要求interleave([ [a,b],[c,d] ], [a,c,b,d] ),Ls内不确定有多少个列表。实现interleave的代码。
代码:
interleave(Ls,[]):-allnull(Ls).
interleave(Ls,L):-
get_heads(Ls,Hs),
get_tails(Ls,Ts),
interleave(Ts,Ln),
append(Hs,Ln,L).
get_heads([],[]).
get_heads(Ls, Heads):-
Ls = [L1|Ln],
L1 = [H|T],
get_heads(Ln,Hs),
Heads = [H|Hs].
get_tails([],[]).
get_tails(Ls, Tails):-
Ls = [L1|Ln],
L1 = [H|T],
get_tails(Ln,Ts),
Tails = [T|Ts].
allnull([]).
allnull(Ls):-
Ls=[[]|T],
allnull(T).
append([],X,X).
append([A|X],Y,[A|Z]):- append(X,Y,Z).
2017年09月28日 02点09分
1
题目要求:
interleave(Ls,L). Ls是多个列表组成的列表,且各个列表长度相同,如[ [1,2],[3,4] ]。
要求interleave([ [a,b],[c,d] ], [a,c,b,d] ),Ls内不确定有多少个列表。实现interleave的代码。
代码:
interleave(Ls,[]):-allnull(Ls).
interleave(Ls,L):-
get_heads(Ls,Hs),
get_tails(Ls,Ts),
interleave(Ts,Ln),
append(Hs,Ln,L).
get_heads([],[]).
get_heads(Ls, Heads):-
Ls = [L1|Ln],
L1 = [H|T],
get_heads(Ln,Hs),
Heads = [H|Hs].
get_tails([],[]).
get_tails(Ls, Tails):-
Ls = [L1|Ln],
L1 = [H|T],
get_tails(Ln,Ts),
Tails = [T|Ts].
allnull([]).
allnull(Ls):-
Ls=[[]|T],
allnull(T).
append([],X,X).
append([A|X],Y,[A|Z]):- append(X,Y,Z).