Главная

ПРОЕКТ "ЧЕЛОВЕК. ЗЕМЛЯ. ВСЕЛЕННАЯ"

Инструменты пользователя

Инструменты сайта


project:prolog:listing:delenie_spiska



Программа "Деление списка"

/* 11.11.2012
Среда - EZY Prolog
Программа «Деление списка». */
 
domains
/* список чисел */
list = integer *
/* компаратор */
middle = integer
 
predicates
split(middle,list,list,list)
 
clauses
/* Очередной элемент извлекается из списка при помощи метода разделения списка на голову и хвост, а потом сравнивается с компаратором Middle.
Метод деления списка на голову и хвост используется в данном правиле как для разделения исходного списка, так и для формирования выходных списков.  
Если значение этого элемента меньше или равно значению компаратора, то элемент помещается в список L1 и формируется новый список, состоящий из хвоста предыдущего списка. */
split(Middle,[Head|Tail],[Head|L1],L2) :- Head <= Middle, write("Head1 = ", Head, ", ", "Tail1 = ", Tail), nl, split(Middle,Tail,L1,L2).
 
/* Если значение этого элемента больше значения компаратора, то элемент помещается в список L2  и формируется новый список, состоящий из хвоста предыдущего списка. */
split(Middle,[Head|Tail],L1,[Head|L2]) :- Head > Middle,   write("Head2 = ", Head, ", ", "Tail2 = ", Tail), nl, split(Middle,Tail,L1,L2).
/* Вывести содержимое списков: исходный список - уже пустой, L1 - числа меньше или равно Middle, L2 - числа больше Middle) */
split(_,[],[],[]).
 
goal
/* Внешние цели -
split(40,[0,30,50,20,25,65,95],L1,L2).*/

Результат:

Head1 = 0, Tail1 = [65,30,50,20,25,95]
Head2 = 65, Tail2 = [30,50,20,25,95]
Head1 = 30, Tail1 = [50,20,25,95]
Head2 = 50, Tail2 = [20,25,95]
Head1 = 20, Tail1 = [25,95]
Head1 = 25, Tail1 = [95]
Head2 = 95, Tail2 = []
L1=0,30,20,25
L2=50,65,95

!!Рекомендуем: Что должен знать современный человек?Семейная Энциклопедия ЗдоровьяСамоанализ. Работа над собойОглавлениеГлавная сайта

Обсуждение

Ваш комментарий:
Y E Q V L
 
project/prolog/listing/delenie_spiska.txt · Последние изменения: 2023/09/03 22:22 (внешнее изменение)

Вы можете оставить свои комментарии в разделе "Обсуждение".
Рекомендуем оформить подписку на новости данного раздела. Для этого нажмите на кнопку "Подписаться", расположенную справа снизу каждой страницы (знак конверта).

Индекс цитирования