| Код | domains list= integer* predicates split(list,list,list,list,list,integer) clauses split([],LessThen,GreaterThen,LessThen,GreaterThen,_):-!. split([Head|Tail],LessOld,GreaterOld,LessResult,GreaterResult,Divider):- Head> Divider, GreaterNew= [Head|GreaterOld], !, split(Tail,LessOld,GreaterNew,LessResult,GreaterResult,Divider),!. split([Head|Tail],LessOld,GreaterOld,LessResult,GreaterResult,Divider):- LessNew= [Head|LessOld], !,split(Tail,LessNew,GreaterOld,LessResult,GreaterResult,Divider). goal nl,nl,nl, X= [10,20,15,5,6,7,3,2],Divider= 12, split(X,[],[],Less,Greater,Divider), write("Source is "),write(X),nl, write("Less then "),write(Divider),write(":"),write(Less),nl, write("Greater then "),write(Divider),write(":"),write(Greater),nl.
|
Вот так. переменная X - исходный список; Divider - гранница, относительно которой происходит разделение. Синтаксис - Turbo Prolog, другого под рукой не было. |