Разделение исходного списка на список отрицательных и положительных чисел - Prolog
Формулировка задачи:
Задание: Создайте предикат, который разделит исходный список из целых чисел на два списка: список положительных чисел и список отрицательных чисел.(Swi-Prolog)
Сначала я создал предикат, который будет записывать мои списки чисел.
Затем я попытался сделать так, чтобы записывало хотя бы отрицательные числа в один список(при условии что все числа отрицательные- ну хотя бы так)
Но все равно ничего не получается, при первом вхождении в рекурсию у меня выдает false, и программа дальше не работает.
Вот такой вот запрос использовал...
Ломаю голову второй день, спасите, люди добрые
Решение задачи: «Разделение исходного списка на список отрицательных и положительных чисел»
textual
Листинг программы
nez([H|T], [H|T1], T2) :- H < 0, !, nez(T, T1, T2). nez([H|T], T1, [H|T2]) :- nez(T, T1, T2).
Объяснение кода листинга программы
- В данном коде используется процедура
nez
для разделения исходного списка на список отрицательных и положительных чисел. - При первом вызове процедуры
nez
передаются три аргумента:[H|T]
,[H|T1]
иT2
. ЗдесьH
- это первый элемент списка,T
- это остаток списка,T1
- это список положительных чисел, аT2
- это список отрицательных чисел. - Условие
H < 0
проверяет, является ли первый элемент списка отрицательным числом. - Если условие истинно, то происходит рекурсивный вызов процедуры
nez
с аргументамиT
,T1
иT2
. Это позволяет обработать все элементы списка. - Если условие ложно, то происходит рекурсивный вызов процедуры
nez
с аргументамиT1
иT2
. Это позволяет продолжить обработку списка положительных чисел. - В результате работы процедуры
nez
список отрицательных чисел будет содержаться вT2
, а список положительных чисел будет содержаться вT1
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д