Функция POSSESSING и UNION - Lisp

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

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

Простите, но мне нужна помощь так как я не силен в лиспе, а лабораторная уже завтра Функции, выбирающие из списка элемент или элементы, обладающие заданным свойством. Список задается в виде значения аргумента, соответствующего связанной переменной L, свойство характеризуется предикатом, наименование или определяющее выражение которого дано в качестве значения аргумента, соответствующего связанной (функциональной) переменной Р. 1) Функция POSSESSING - образует список из всех элементов данного списка, обладающих заданным свойством. 5) Функция UNION - вычисляет объединение двух множеств. Значение функции представляет собой список всех выражений, являющихся элементами хотя бы одного из заданных списков. Если каждый из заданных списков не содержал повторяющихся элементов, то в результирующий список каждый элемент войдет лишь один раз
Извините Union нашел, может кому пригодится
(defun Union (L1 L2)
  (cond
   ((null L1) L2)
   ((member (car L1) L2) (Union (cdr L1) L2))
   (T (cons (car L1) (Union (cdr L1) L2)))))

Решение задачи: «Функция POSSESSING и UNION»

textual
Листинг программы
(defun possessing (l f)
    (remove-if-not #'(lambda (x) (funcall f x)) l))
 
(possessing '(1 2 3 4 5 6 7 8) 'evenp) ==> (2 4 6 8)

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

В данном коде реализована функция POSSESSING, которая принимает два аргумента: список l и предикат f. Предикат f указывает на условие, которому должны удовлетворять элементы списка l. В данном примере предикат f представлен функцией evenp, которая возвращает T, если число четное, и NIL, если число нечетное. Функция POSSESSING использует функцию remove-if-not, чтобы отфильтровать список l и оставить только те элементы, которые удовлетворяют предикату f. Результатом работы функции является отфильтрованный список. В данном примере список l содержит числа от 1 до 8, а предикат f указывает на четность чисел. Поэтому результатом работы функции POSSESSING будет список (2 4 6 8), так как только эти числа из списка l являются четными.

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


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

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

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