Объединять два списка так, чтобы в объединенном списке значения были уникальны - 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. Написал две функции одна объединяет, другая проверяет уникальность
Подскажите как проверку уникальности вставить в функцию объединения?

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

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

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

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

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

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


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

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

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