Отсортировать базу данных методом слияния - Prolog
Формулировка задачи:
Работаю в SWI-Prolog.
Реализовал всё, кроме сортировки.
Необходимо упорядочить список объектов досуга по количеству мест с помощью сортировки слиянием.
Поискав, понял, что нужно сначала БД засунуть в список, затем производить манипуляции с ним.
findall(Amount, acc(_,_,_,_,_,Amount,_), Object_list),
Но тут в список помещается лишь 1 параметр записи. Как засунуть всё? И как отсортировать базу?
Решение задачи: «Отсортировать базу данных методом слияния»
textual
Листинг программы
% помещаем в список поле, по которому будем сортировать базу findall(LastName, acc(_, _, LastName, _,), Object_list), % сортируем этот список любым из методов sorting(Object_list, Sorted_list), % показываем базу с помощью этого списка в отсортированном виде show_sorted(Sorted). %********show_sorted******** show_sorted([]). show_sorted([H|T]) :- acc(Number, Name, H, Age), write(Number), write(' '), write(H), write(' '), write(LastName), write(' '), write(Age), nl, show_sorted(T).
Объяснение кода листинга программы
- Сначала мы объявляем список, который будем сортировать, используя поле
LastName
. - Затем мы сортируем этот список любым из методов.
- После сортировки мы выводим отсортированный список с помощью функции
show_sorted
. - Функция
show_sorted
сначала проверяет, пуст ли список. Если это так, она завершает свою работу. - Если список не пуст, она извлекает первый элемент и записывает его в переменную
H
. - Затем она записывает номер, имя, фамилию и возраст этого элемента.
- Наконец, она рекурсивно вызывает себя для оставшейся части списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д