Списки и подсписки. Ошибка в программе - Lisp
Формулировка задачи:
Подскажите пожалуйста, что надо добавить или изменить в коде, чтобы программа работала.
Задание:
Даны списки L1,L2,L3. Если L1 и L2 являются подсписками L3, то сформировать
новый список, удалив из L3 подсписки L1 и L2, в противном случае оставить L3 без изменения.
(defun prefix(X Y) ( (null X T)((null Y)nil) ) ( cond( ( equal(car X)(car Y) ) ( prefix(cdr X)(cdr Y) ) ) ) ) (defun subl(X Y) (cond((null X) T) ((null Y)nil) ((prefix X Y) T) ((subl X (cdr Y)) T) ) ) (defun delpref(X Y) (cond ((null X) Y) (T(delpref(cdr X)(cdr Y))) ) ) (defun delsubl(X Y) (cond((null X) Y) ((prefix X Y)(delpref X Y)) ((subl X(cdr Y)(delsubl X(cdr Y)))) ) )
Решение задачи: «Списки и подсписки. Ошибка в программе»
textual
Листинг программы
(defun prefix(X Y) (cond ((null X) T) ((null Y) nil) ((equal (car X) (car Y)) (prefix (cdr X) (cdr Y)) ) ) ) (defun delsubl (X Y) (cond ((null X) Y) ((prefix X Y) (delpref X Y)) ((subl X (cdr Y)) (cons (car Y) (delsubl X (cdr Y)))) ) ) (defun zadacha (L1 L2 L3) (cond ((and (subl L1 L3) (subl L2 L3)) (delsubl L1 (delsubl L2 L3))) (t L3) ) )
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д