Задача lisp
Формулировка задачи:
дан список lst. Если первый элемент является списком, то вывести новый список, первый элемент которого будет хвост lst, а второй головой. Иначе вывести список lst из которого удалён второй элемент.
Пример 1: (A B (6 4) G R) результат: (((6 4) G R) (A B));
Пример 2: (F (6 4) G R) результат: (F G R).
Помогите пожалуйста решить
Решение задачи: «Задача lisp»
textual
Листинг программы
- (defun transform (lst)
- (if (listp (first lst))
- (list (rest lst) (first lst))
- (cons (first lst) (cddr lst))))
- TRANSFORM
- [12]> (transform '((a b) (6 4) g r))
- (((6 4) G R) (A B))
- [13]> (transform '(f (6 4) g r))
Объяснение кода листинга программы
В данном коде определена функция TRANSFORM, которая принимает на вход список lst. Если первый элемент списка является списком, то функция возвращает список, содержащий второй элемент исходного списка и первый элемент, выделенный в отдельный список. В противном случае функция возвращает список, содержащий первый элемент исходного списка и список, полученный без первого элемента. Примеры использования функции: [12]> (transform '((a b) (6 4) g r)) (((6 4) G R) (A B)) [13]> (transform '(f (6 4) g r))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д