У меня есть простое задание - написать сортировку вставками на Прологе. Вот инструкции:
(10 баллов) insertSort (List, Sorted) Напишите программу сортировки вставками в прологе. Вы можете считать, что все элементы списка являются числами.
По сути, я должен дать ему список, и он вернет список отсортированных значений. После полной неудачи при написании этого самого (хотя мой кажется похожим на все остальное - см. Мой код, опубликованный ниже), я решил обратиться за помощью в Интернете. Я буквально пробовал каждый пример сортировки вставки, который я нашел в Интернете для пролога ... и ни один из них не работал. Ни одного.
Не понимаю почему. Может быть, это потому, что я должен использовать пролог SWI.
Я получаю две следующие ошибки:
ERROR: toplevel: Undefined procedure: insertionSort/2 (DWIM could not correct goal)
ERROR: toplevel: Undefined procedure: insertionSort/3 (DWIM could not correct goal)
Мне так надоела эта глупая ошибка. Это никоим образом не помогает. Почему, когда я делаю то же самое, что и для вызова другой простой процедуры (процедура суммирования), компилируя файл, а затем вызывая то, что я хочу, это работает, но с этой функцией InsertSort - нет? Я уверен, что не называю это неправильно.
Вот мой код. Ничего подобного.
insertionSort([],[]) :-
!.
insertionSort([H|T], X) :-
insertionSort(T, Y),
insert(H, Y, X).
insert(A, [], [A]) :-
!.
insert(A, [H|T], [A|L]) :-
A =< H,
insert(H, T, L).
insert(A, [H|T], [H|L]) :-
A > H,
insert(A, T, L).
Как я уже сказал, я уже пробовал, вероятно, 2 дюжины + примеров в Интернете, и все они выдают сообщения об ошибках, поэтому, если ваш ответ - связать меня с чем-то, я могу гарантировать, что я уже исчерпал его (например, это: Сортировка вставки Prolog - разве не похоже, что это сработает? Ну, это не так.)
Пожалуйста, я так расстроен. Любая помощь приветствуется.
?- listing.
This отобразит все предикаты, определенные в текущем модуле (вероятно, это модуль по умолчаниюuser
, если вы не используете функцию модулей активно). - person hardmath   schedule 04.05.2015