Разделение исходного списка на список отрицательных и положительных чисел - 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).

Объяснение кода листинга программы

  1. В данном коде используется процедура nez для разделения исходного списка на список отрицательных и положительных чисел.
  2. При первом вызове процедуры nez передаются три аргумента: [H|T], [H|T1] и T2. Здесь H - это первый элемент списка, T - это остаток списка, T1 - это список положительных чисел, а T2 - это список отрицательных чисел.
  3. Условие H < 0 проверяет, является ли первый элемент списка отрицательным числом.
  4. Если условие истинно, то происходит рекурсивный вызов процедуры nez с аргументами T, T1 и T2. Это позволяет обработать все элементы списка.
  5. Если условие ложно, то происходит рекурсивный вызов процедуры nez с аргументами T1 и T2. Это позволяет продолжить обработку списка положительных чисел.
  6. В результате работы процедуры nez список отрицательных чисел будет содержаться в T2, а список положительных чисел будет содержаться в T1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы