Списки и подсписки. Ошибка в программе - 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)
    )
)

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


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

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

7   голосов , оценка 3.714 из 5
Похожие ответы