Получить ascii код символа в Lisp
Формулировка задачи:
Решение задачи: «Получить ascii код символа в Lisp»
(defun task (lst) (cond ((null lst) nil) ((listp (car lst)) (cons (task (car lst)) (task (cdr lst)))) ((and (symbolp (car lst)) (= 1 (strLen (atom2string (car lst))))) (cons (strAsc (atom2string (car lst))) (task (cdr lst)))) (t (cons (car lst) (task (cdr lst)))))) ==> TASK (task '(a (aaa) 7 b bbb 8 c (ccc))) ==> (65 (AAA) 7 66 BBB 8 67 (CCC))
Объяснение кода листинга программы
В данном коде определен функцией task
, которая принимает в качестве аргумента список lst
. Если список пуст, то возвращается nil
. Если первый элемент списка является списком, то рекурсивно вызывается функция task
для первого элемента и результат присоединяется к результату вызова функции task
для оставшейся части списка. Если первый элемент является символом и его длина равна 1, то возвращается его ASCII код, иначе вызывается функция strAsc
для преобразования символа в строку и получения его ASCII кода, после чего результат присоединяется к результату вызова функции task
для оставшейся части списка. Если первый элемент не является списком, символом или строкой, то он присоединяется к результату вызова функции task
для оставшейся части списка.
Пример использования функции task
с аргументом (a (aaa) 7 b bbb 8 c (ccc))
возвращает (65 (AAA) 7 66 BBB 8 67 (CCC))
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д