Почему в консоли Пролога получаю False?
Создал на Прологе программу. Она разделяет список на два списка. Разделителем служит число N. Всё, что меньше N, отправляется в L1, всё, что больше - в L2. Программа:
% Предикат для разделения списка на два подсписка
split_list([], _, [], []).
split_list([X|L], N, L1, L2) :-
X < N,
split_list(L, N, [X|L1], L2).
split_list([X|L], N, L1, [X|L2]) :-
X >= N,
split_list(L, N, L1, L2).
Программу записал в файл split с расширением .pl "Блокнота". Файл поместил в рабочую папку.
Перешел в диалоговое окно для взаимодействия с Прологом. После приглашения к диалогу ?- ввел название файла:
?-[split].
Получил ответ Пролога True
.
Далее ввел команду для загрузки программы из файла:
?- consult('split.pl').
Получил ответ Пролога True
.
Затем ввел строку (не как комментарий, а в качестве кода):
?- split_list([1,2,3,4,5,6], 3, L1, L2).
Получил ответ Пролог False
. В чем причина?
Использую версию SWI-Prolog
Ответы (1 шт):
Исправил код следующим образом:
% Предикат для разделения списка на два подсписка
split_list([], _, [], []).
split_list([X|L], N, [X|L1], L2) :-
X =< N,
split_list(L, N, L1, L2).
split_list([X|L], N, L1, [X|L2]) :-
X > N,
split_list(L, N, L1, L2).
Определил, что разделитель попадает в первый список. В итоге получил списки следующим образом:
?- split_list([1,2,3,4,5,6], 3, L1, L2).
L1 = [1, 2, 3],
L2 = [4, 5, 6]