Поменять местами элементы списка - Lisp (229982)
Формулировка задачи:
Здравствуйте!
Помогите, пожалуйста, поменять местами элементы списка, используя базовые функции.
Список (a1 a2 a3 a4)
Результирующий:
(a3 a1 a2 a4)
Решение задачи: «Поменять местами элементы списка»
textual
Листинг программы
(defun rearrange (w) (rotatef (nth 1 w) (nth 0 w) (nth 2 w)) w) > (rearrange '(a1 a2 a3 a4)) (A3 A1 A2 A4)
Объяснение кода листинга программы
В коде определена функция rearrange, которая принимает один аргумент w. Внутри функции происходит вызов функции rotatef, которая меняет местами элементы списка, хранящегося в переменной w. В данном случае, меняются местами элементы с индексами 1, 0 и 2. После этого, результат вызова функции rotatef присваивается переменной w. В конце функции, переменная w возвращается в качестве результата. Пример использования функции rearrange выглядит следующим образом:
(rearrange '(a1 a2 a3 a4)) (A3 A1 A2 A4) В этом примере, функция rearrange принимает список '(a1 a2 a3 a4) и возвращает список (A3 A1 A2 A4), где элементы исходного списка заменены в соответствии с указанными индексами.