Описать на языке Лисп функцию f(x y z) от трёх аргументов - Lisp

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

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

Описать на языке Лисп функцию f(x y z) от трёх аргументов, которая формирует из своих аргументов список. Далее нужно проверить, является ли первый элемент подсписком, и найти его длину. Если первый элемент  подсписок, то вернуть исходный список при условии, что длина подсписка меньше либо равна 2, иначе вернуть подсписок без последнего элемента. Иначе вернуть исходный список без первого элемента.

Решение задачи: «Описать на языке Лисп функцию f(x y z) от трёх аргументов»

textual
Листинг программы
(defun process (a b c)
  (if (listp a)
      (if (<= (length a) 2)
          (list a b c)
          (butlast a))
      (list b c)))
 
> (process 1 2 3)
(2 3)
> (process '(1 1) 2 3)
((1 1) 2 3)
> (process '(1) 2 3)
((1) 2 3)
> (process '(a b c) 2 3)
(A B)

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

В коде определена функция process со следующими тремя аргументами a, b, c. Если a является списком, то выполняется следующая проверка: если длина списка a не превышает 2, то возвращается список a, b, c. В противном случае выполняется операция butlast a, которая удаляет последний элемент из списка a. Затем выполняется рекурсивный вызов функции process с аргументами b и c. Если a не является списком, то выполняется вызов функции process с аргументами b и c.

  1. Вызов функции process(1 2 3) вернет список (2 3).
  2. Вызов функции process('(1 1) 2 3) вернет список ((1 1) 2 3).
  3. Вызов функции process('(1) 2 3) вернет список ((1) 2 3).
  4. Вызов функции process('(a b c) 2 3) вернет список (A B).

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


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

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

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