Объединять два списка так, чтобы в объединенном списке значения были уникальны - Prolog

Узнай цену своей работы

Формулировка задачи:

Всем привет!) Помогите решить задачу (SWI Prolog.), необходимо объединять два списка.Что бы в объединенном списке значения были уникальны. Пример: Список1= 1,2,3,4,5 Список2=1,7,8,9,6 в результате должно получится Список3=1,2,3,4,5,6,7,8,9. Написал две функции одна объединяет, другая проверяет уникальность
Листинг программы
  1. unique([]):-!.
  2. unique([Head|Tail]):-
  3. member(Head, Tail), !, fail;
  4. unique(Tail).
  5. append([], List2, List2).
  6. append([Head|Tail], List2, [Head|TailResult]):- append(Tail, List2, TailResult).
Подскажите как проверку уникальности вставить в функцию объединения?

Решение задачи: «Объединять два списка так, чтобы в объединенном списке значения были уникальны»

textual
Листинг программы
  1. unique_append([], List2, List2).
  2. unique_append([Head|Tail], List2, TailResult):-
  3.     member(Head, List2),
  4.     !,
  5.     unique_append(Tail, List2, TailResult).
  6. unique_append([Head|Tail], List2, [Head|TailResult]):-
  7.     unique_append(Tail, List2, TailResult).

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

Код выполняет объединение двух списков, при этом в объединенном списке значения должны быть уникальны. Список уникальных элементов получается следующим образом:

  1. Если первый список пустой, то результат будет второй список без изменений.
  2. Если первый список не пустой, то:
    • Проверяется, есть ли первый элемент первого списка во втором списке.
    • Если элемент найден, то он пропускается и выполняется рекурсивный вызов для оставшейся части первого списка и второго списка.
    • Если элемент не найден, то он добавляется в начало объединенного списка и выполняется рекурсивный вызов для оставшейся части первого списка и второго списка.

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


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

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

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы