Описать на языке Лисп функцию 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.
- Вызов функции 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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д