Дан список целых чисел. Определить функцию, возвращающую его копию - Lisp

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

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

Дан список целых чисел. Определить функцию, возвращающую его копию, в которой отрицательные элементы умножены на 2, а положительные – на 3. Использовать только базис Лиспа. Например: если дано "(3 –2 4 –1 –5 –9 2 6)", ответом будет "(9 –4 12 –2 –10 –18 6 18)".

Решение задачи: «Дан список целых чисел. Определить функцию, возвращающую его копию»

textual
Листинг программы
(defun task (lst)
  (cond ((null lst) nil)
        ((minusp (car lst)) (cons (* 2 (car lst)) (task (cdr lst))))
        (t (cons (* 3 (car lst)) (task (cdr lst))))))
 
(task '(3 -2 4 -1 -5 -9 2 6))
 
==> (9 -4 12 -2 -10 -18 6 18)

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

В коде определена функция task, которая получает в качестве аргумента lst список целых чисел. Если lst равен nil, то функция возвращает nil. Если car lst меньше нуля, то в первую очередь возвращается результат умножения car lst на 2, а затем вызывается функция task, передав в качестве аргумента cdr lst. Если car lst больше или равен нулю, то в первую очередь возвращается результат умножения car lst на 3, а затем вызывается функция task, передав в качестве аргумента cdr lst. Значение переменной lst — это список '(3 -2 4 -1 -5 -9 2 6). Значение переменной task — это функция с номером 1. Значение переменной car lst — это число 3. Значение переменной cdr lst — это список '-2 4 -1 -5 -9 2 6. Значение переменной minusp — это функция с номером 2. Значение переменной cons — это функция с номером 3. Значение переменной * — это функция с номером 4. Значение переменной nil — это список nil. Значение переменной t — это логическое значение true. Значение переменной 9 - это число 9. Значение переменной -4 - это число -4. Значение переменной 12 - это число 12. Значение переменной -2 - это число -2. Значение переменной -10 - это число -10. Значение переменной -18 - это число -18. Значение переменной 6 - это число 6. Значение переменной 18 - это число 18. В результате выполнения функции task со списком '(3 -2 4 -1 -5 -9 2 6) в качестве аргумента, возвращается список (9 -4 12 -2 -10 -18 6 18).

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


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

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

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