Ответ в теме: Разделение списка на элементы большие заданного значения и меньшие

      Комментарии к записи Ответ в теме: Разделение списка на элементы большие заданного значения и меньшие отключены

Главная Форумы Программирование Помощь с решением задач на Prolog Задачи на списки Разделение списка на элементы большие заданного значения и меньшие Ответ в теме: Разделение списка на элементы большие заданного значения и меньшие

#2078

Если исходный список пуст – то результатом работы функции являются два пустых списка.
В противном случае, первый элемент сравнивается с опорным (относительно которого выполняется разделение), в зависимости от результата сравнения он добавляется к какому-либо списку-результату. В любом случае выполняется рекурсивный вызов, рассчитывающий остальные элементы результата.

divide([], _Pivot, [], []):-!.
divide([Head|Tail], Pivot, [Head|GreaterList], SmallerList):-
  Head >= Pivot, !, divide(Tail, Pivot, GreaterList, SmallerList).
divide([Head|Tail], Pivot, GreaterList, [Head|SmallerList]):-
  divide(Tail, Pivot, GreaterList, SmallerList).