このタスクではPrologが優れています。ちょうどその追加/ 3様々な方向に を使用することができます観察し、次のよう
% append(+List,+List,-List)
% append(-List,-List,+List)
append([], X, X).
append([X|Y], Z, [X|T]) :-
append(Y, Z, T).
を今すぐ簡単にスプリット/ 2を定義します。これは_1見つけると_2ようなリストの連結が++でLは= _1 ++ S ++ _2、そのう:
% split(+List,-Sublist)
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
さようなら
よろしくお願いします。
リストの長さが3未満の場合はどうなりますか? Prologのどのバージョンがありますか? –
False/Noでなければなりません。 私はSWIを持っています5.10.5 –