Добавление условий в текст программы - Lisp

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

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

есть задача, найти наибольшее по модулю число в списке с подписками.
(defun max_abs (li_st);declaration the function with arguments "li_st"
"This function finds the largest modulo value in the list" 
  (cond ((atom li_st) li_st) ; if on the entrance is served by an atom, it is the maximum
        ((null (cdr li_st)) (car li_st)) ; If the element is the only one in the list, then it is maximum
        (t (let ((a1 (abs (max_abs (car li_st)))) ; take the maximum of the head (a1)
                 (a2 (abs (max_abs (cdr li_st))))) ; take the maximum of the tail (a2)
             (if (> a1 a2) a1 a2)))) ;return the maximum of a1 and a2
             
)
на комментарии не смотрите, там половина чушь, сам писал введу так (max_abs '(15 (((9 2) -64) -91 8) -73)) выводит правильно -73 если так (max_abs '(15 (((9 2) -64) -91 "8") -73)) то вот так получается t to > should be a real number: "8" или (max_abs '(15 (((9 2) -64) -91 d) -73)) t to > should be a real number: D как добавить учет этих самых символов, чтобы в списке с числами могли быть символы, а программа не ругалась и продолжала сравнивать числа

Решение задачи: «Добавление условий в текст программы»

textual
Листинг программы
(if (numberp list)
    (abs list)
    list

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

  1. В данном коде используется условная конструкция if.
  2. Условие для проверки — (numberp list).
  3. Значение переменной list будет проверяться на число.
  4. Если условие (numberp list) истинно, то выполнится блок кода:
  5. (abs list) — это функция, которая будет применяться к значению переменной list, если условие истинно.
  6. Функция abs возвращает абсолютное значение числа.
  7. Если условие (numberp list) ложно, то выполнится блок кода:
  8. list — это значение переменной list, которое будет возвращено, если условие ложно.
  9. В данном коде нет использования функций, кроме abs и numberp.
  10. В данном коде нет использования переменных, кроме list.
  11. В данном коде нет использования операторов, кроме if.
  12. В данном коде нет использования встроенных конструкций языка программирования, кроме условной конструкции if.
  13. В данном коде нет использования символов, кроме кавычек.
  14. В данном коде нет использования комментариев.
  15. В данном коде нет использования макросов.
  16. В данном коде нет использования циклов.
  17. В данном коде нет использования условий.
  18. В данном коде нет использования операций.
  19. В данном коде нет использования функций, которые принимают аргументы.
  20. В данном коде нет использования встроенных функций языка программирования, кроме abs и numberp.

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

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