Получить ascii код символа в Lisp

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

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

Написать программу, которая в исходном списке заменяет все элементы-символы соответствующими им ASCII-кодами. Список может содержать подсписки произвольной глубины вложения.

Решение задачи: «Получить ascii код символа в Lisp»

textual
Листинг программы
(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)).

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


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

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

5   голосов , оценка 3.4 из 5