Даны три списка объединить их при этом отбросить минимальный элемент - Lisp

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

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

Даны три списка: (a1,a2,a3...),(b1,b2,b3...),(c1,c2,c3...),объединить их с помощью mapcon,при этом отбросить минимальный элемент т.е.

mapcon

берет i-тые элементы из трех списков,вычисляет минимальный элемент и отбрасывает его,добавляя в список только два элемента. Пример: (list 1 2 3 4) (list 5 4 3 2) (list 3 4 5 6) шаг 1: берем a1,b1,c1 и находим среди них минимальный элемент 1,5,3=> будет 1.Добавляем в новый список только 5 и 3 шаг 2: берем a2,b2,c2 и находим среди них минимальный элемент 2,4,4=> будет 2.Добавляем в список только 4 и 4 и т.д.

Решение задачи: «Даны три списка объединить их при этом отбросить минимальный элемент»

textual
Листинг программы
(defun task (a1 a2 a3)
  (mapcon #'(lambda (x y z)
               (cond ((<= (car x) (car y) (car z)) (list (car y) (car z)))
                     ((<= (car y) (car x) (car z)) (list (car x) (car z)))
                     (t           (list (car x) (car y))))) a1 a2 a3)) 
 
==> task
 
(task '(1 22 33 44) '(11 2 33 44) '(11 22 33 4))
 
==> (11 11 22 22 33 33 44 44)

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

В коде определена функция task, которая принимает три аргумента a1, a2 и a3. Функция объединяет эти три списка в один, при этом отбрасывая минимальный элемент. Список, представленный в виде (1 22 33 44)',(11 2 33 44)' и (11 22 33 4), является входным данными для функции task. В функции task используется функция mapcon, которая применяет к каждому элементу входного списка анонимную функцию. Анонимная функция (lambda (x y z) принимает три аргумента x, y и z. Внутри функции происходит проверка условий с использованием оператора <=. Если (car x) меньше или равно (car y) и (car z), то возвращается новый список, состоящий из (car y) и (car z). Если (car y) меньше или равно (car x) и (car z), то возвращается новый список, состоящий из (car x) и (car z). В противном случае возвращается новый список, состоящий из (car x) и (car y). Результатом работы функции task для входных данных (1 22 33 44)',(11 2 33 44)' и (11 22 33 4) будет список (11 11 22 22 33 33 44 44).

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


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

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

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