하위 목록 알고리즘에 대해 다음 구현이 있습니다. 문제점 : 2 개의 목록이 주어지면 하나의 목록이 다른 목록의 하위 목록인지 확인하십시오. 프롤로그에서 또 다른 독특한 솔루션이 필요합니다.프롤로그 챌린지
해결 방법 1 :
sublist([H1|T1], L, [H2|T2]):-
H1 = H2,
sublist(T1, L, T2).
sublist([], _, _)
sublist([H1|T1],L,[H2|T2]):-
sublist(L,L,T2).
해결 방법 2 :
sublist([H|T], [H|L]):- check(T,L),
sublist(S, [H|T]):- sublist(S,T).
check([H|T], [H|R]):-
check(T,R).
check([],_).
해결 방법 3 :
sublist(S,L):-
append(_,R,L),
append(S,_,R).
해결 방법 3 '
sublist(S,L):-
append3(_,S,_,L).
... --> [] | [_], ... .
seq([]) --> [].
seq([E|Es]) --> [E], seq(Es).
:와
목록의 다른 목록의 하위 목록이 정확히 무엇을 의미합니까? 왜냐하면 몇 가지 해석이 있기 때문입니다. 나는. (sublist ([a, b, c], [a, c])','sublist ([a, b, c], [c, a])','sublist ([a , b, c], [a, b])'? – salva
오른쪽 예제는 다음과 같습니다.? -sublist ([a b c], [d e b a b c f]) 참 \ n? -sublist ([a b c], [a b f c]) 실패 – Ravul