Prolog非常适合这项任务。只需注意,append/3可以在不同的方向上使用:
append([], X, X).
append([X|Y], Z, [X|T]) :-
append(Y, Z, T).
现在,只需要按如下方式定义split/2。它将找到_1和_2,使得L = _1 ++ S ++ _2,其中++是列表连接操作:
split(L, S) :-
append(_, H, L),
append(S, _, H).
以下是您的问题:
?- Fruits=[apple,banana,orange,pear,lemon,melon], Split=[_,_,_], split(Fruits,Split).
Fruits = [apple,banana,orange,pear,lemon,melon],
Split = [apple,banana,orange] ;
Fruits = [apple,banana,orange,pear,lemon,melon],
Split = [banana,orange,pear] ;
Fruits = [apple,banana,orange,pear,lemon,melon],
Split = [orange,pear,lemon] ;
Fruits = [apple,banana,orange,pear,lemon,melon],
Split = [pear,lemon,melon] ;
No
你好
最好的问候