Получить 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))
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д