Переставить первый и последний элемент местами - Lisp
Формулировка задачи:
Определить функцию, которая в заданном списке переставляет первый и последний элементы местами.
Решение задачи: «Переставить первый и последний элемент местами»
textual
Листинг программы
(defun task (lst) (append (last lst) (butlast (cdr lst)) (list (car lst)))) ==> TASK (task '(1 2 3 4 5)) ==> (5 2 3 4 1)
Объяснение кода листинга программы
В коде определена функция task, которая принимает в качестве аргумента список lst.
Функция выполняет следующие шаги:
last lst— возвращает последний элемент спискаlst.butlast (cdr lst)— возвращает список, полученный изlst, исключив из него последний элемент.list (car lst)— возвращает список, полученный изlst, включив в него первый элемент. Затем, с помощью функцииappend, полученные списки объединяются в один, в котором первый и последний элементы спискаlstпоменяны местами. При вызове функцииtaskс аргументом'(1 2 3 4 5), она вернет результат(5 2 3 4 1).