我有以下實現的子列表算法。 問題:給定2個列表,確定一個是否是另一個的子列表。 我真的需要Prolog中另一個獨特的解決方案。序言挑戰
解決方法一:
sublist([H1|T1], L, [H2|T2]):-
H1 = H2,
sublist(T1, L, T2).
sublist([], _, _)
sublist([H1|T1],L,[H2|T2]):-
sublist(L,L,T2).
解決方法二:
sublist([H|T], [H|L]):- check(T,L),
sublist(S, [H|T]):- sublist(S,T).
check([H|T], [H|R]):-
check(T,R).
check([],_).
解決方法三:
sublist(S,L):-
append(_,R,L),
append(S,_,R).
解決方法三':
sublist(S,L):-
append3(_,S,_,L).
你是什麼意思是一個列表是另一個子列表?因爲有幾種解釋。即([a,b,c],[a,c]),子列表([a,b,c],[c,a])''''子列表([a ,b,c],[a,b])? – salva
正確的例子是:?-sublist([a b c],[d e b a b c f])True \ n?-sublist([a b c],[a e b f c])失敗 – Ravul