Написать функцию с одним аргументом – списком. Если функция из п. а) возвращает t, создать список из четырех элементов: - Lisp
Формулировка задачи:
Всем привет!
Задание:
а) Напишите функцию, единственный аргумент которой является списком. Функция возвращает t только в том случае, если первые два элемента этого списка являются списками. В остальных случаях функция должна выдавать nil.
б) написать функцию с одним аргументом – списком. Если функция из п. а) возвращает t, создать список из четырех элементов: 1 и 2 элемент 1-го списка + 1 и 2 элементы 2-го списка. Если функция возвращает nil, то убрать из списка первые два элемента.
Часть А выглядит вот так:
С частью Б проблемы.
Связывает элементы функция append, но как вытащить из разных списков эти первые 2 элемента?
(defun fn(n) (cond ((< (length n) 2) nil) (T (and (listp (car n))(listp (cadr n))))nil))
Решение задачи: «Написать функцию с одним аргументом – списком. Если функция из п. а) возвращает t, создать список из четырех элементов:»
textual
Листинг программы
(defun a (w) (when (cdr w) (and (listp (car w)) (listp (cadr w))))) (defun b (w) (if (a w) (list (caar w) (cadar w) (caadr w) (cadadr w)) (nthcdr 2 w))) > (b '((a b d) (e f g) h i)) (A B E F) > (b '((a) (e) h i)) (A NIL E NIL) > (b '((a) h i)) (I)
Объяснение кода листинга программы
В коде определены две функции:
- Функция
a
с одним аргументомw
. В данном случае, она возвращаетt
, еслиw
является списком и имеет более одного элемента. В противном случае, функция возвращаетnil
. - Функция
b
с одним аргументомw
. Если функцияa
возвращаетt
, то есть списокw
не пустой, то функцияb
возвращает список, состоящий из первого, второго, третьего и четвертого элементов спискаw
. В противном случае, функция возвращаетnil
, который является вторым элементом спискаw
. Примеры вызовов функций: (b '((a b d) (e f g) h i))
Результат:(A B E F)
(b '((a) (e) h i))
Результат:(A NIL E NIL)
(b '((a) h i))
Результат:(I)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д