Построение итерационных программ для обработки списков - Lisp

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

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

Помогите, пожалуйста, написать 2 программы с использованием цикла loop) Заранее огромное спасибо)) 1) Два множества представлены списками. Найти объединение множеств. 2) Написать функцию, удаляющую из списка каждый K-й элемент.

Решение задачи: «Построение итерационных программ для обработки списков»

textual
Листинг программы
(defun F (L1 L2)
    (setq newL '())
    (loop for x in L1 do    ; цикл по элементам 1 списка
        (if (not (member x newL))
            (setq newL (append newL (list x)))
        )
    )
    (loop for y in L2 do    ; цикл по элементам 2 списка
        (if (not (member y newL))
            (setq newL (append newL (list y)))
        )
    )
    
    (prin1 newL)
)
 
 
 
(F '(R A B C D)  '(B C K D)) ---> (R A B C D K)

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

В этом коде определена функция F, которая принимает два аргумента — списки L1 и L2. Сначала объявлена пустая переменная newL. Затем используется цикл loop для перебора элементов первого списка L1. Для каждого элемента x проверяется, есть ли он уже в newL с помощью функции member. Если элемента нет в newL, то он добавляется в конец списка newL с помощью функции append. После этого используется второй цикл loop для перебора элементов второго списка L2. Аналогично первому циклу проверяется, есть ли элемент в newL и, если его нет, он добавляется в конец списка. В конце функция prin1 используется для вывода списка newL. Используя функцию F и передавая ей списки '(R A B C D) и '(B C K D), мы получаем результат (R A B C D K).

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


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

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

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