Дан список и 2 числа m и n - Lisp

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

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

Дан список и 2 числа m и n. Если последний элемент списка чётное число, то поменять местами элементы с номерами m и n. Иначе - вывести список, в котором элемент с номерами m будет возведён в степень n. Пример: 1) '(5 2 3 4 8 0 2 4 1 6) 3 9 -> '(5 2 1 4 8 0 1 4 3 6) 2) '(2 3 8 4 0 1) 2 3 -> '(2 27 8 4 0 1)

Решение задачи: «Дан список и 2 числа m и n»

textual
Листинг программы
(defun task (lst m n)
 (let ((n-elt (nth (- n 1) lst))
       (m-elt (nth (- m 1) lst))
       (l (copy lst)))
  (cond ((evenp (car (last lst)))
         (setf (nth (- n 1) l) m-elt)
         (setf (nth (- m 1) l) n-elt))
        (t (let ((z (^ m-elt n)))
                (setf (nth (- m 1) l) z)))) l)) 
 
==> TASK
 
(task '(2 3 8 4 0 1) 2 3)
 
==> (2 27 8 4 0 1)
 
(task '(5 2 3 4 8 0 2 4 1 6) 3 9)
 
==> (5 2 1 4 8 0 2 4 3 6)

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

В коде определена функция task, которая принимает два аргумента: список lst и два целых числа m и n. Список lst содержит элементы: 2 3 8 4 0 1 и 5 2 3 4 8 0 2 4 1 6. Внутри функции task используется let, чтобы создать три новые переменные: n-elt, m-elt и l. n-elt — это элемент списка lst, который находится на позиции n-1, а m-elt — это элемент списка lst, который находится на позиции m-1. l — это копия списка lst. Затем используется cond, чтобы проверить, является ли последний элемент списка lst четным числом. Если это так, то nth элемент списка l, находящийся на позиции n-1, заменяется на m-elt, а nth элемент списка l, находящийся на позиции m-1, заменяется на n-elt. Если последний элемент списка lst не является четным числом, то создается новое значение z, которое является результатом возведения в степень m-elt числа n-1. Затем nth элемент списка l, находящийся на позиции m-1, заменяется на z. В конце функция возвращает список l.

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


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

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

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