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