Проверить, состоят ли два списка из одних и тех же атомов - Lisp

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

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

Здравствуйте, задача на общую рекурсию .Преподавателю не нравится мое решение , путем обхода одного из списков и удаления из него элементов . Подскажите варианты решения.

Решение задачи: «Проверить, состоят ли два списка из одних и тех же атомов»

textual
Листинг программы
(defun remove (a lst)
  (if (null lst) nil 
      (if (eq a (car lst)) (remove a (cdr lst))
                           (cons (car lst) (remove a (cdr lst))))))

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

В данном коде определён функционал для проверки двух списков на наличие одинаковых атомов. Вот список из 20 элементов, описывающих работу кода:

  1. (defun remove (a lst) — функция с именем remove для проверки двух списков на наличие одинаковых атомов.
  2. (if (null lst) nil — проверка на пустой список. Если список пуст, то возвращается nil.
  3. (if (eq a (car lst)) (remove a (cdr lst)) — если первый элемент списка (car lst) равен переменной a, то рекурсивно вызывается функция remove для оставшейся части списка (cdr lst).
  4. (cons (car lst) (remove a (cdr lst))) — если первый элемент списка (car lst) не равен переменной a, то он добавляется в новый список (cons), а затем вызывается функция remove для оставшейся части списка (cdr lst).
  5. В результате работы функции, возвращается новый список, содержащий только уникальные элементы из исходного списка.

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


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

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

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