Изменить код - Lisp

Узнай цену своей работы

Формулировка задачи:

Добрый вечер, имеется код, который считает такое выражение : ((A ∩ B) – C) ∩ D , где A,B,C,D-множества. Как его переделать, что бы считало (С - (A ∩ B)) ∩ D ?
Листинг программы
  1. (defun func (a b c d &optional (flag '1) (res '()) (temp b) (temp2 '()))
  2. (cond
  3. ((equalp flag '1)
  4. (cond
  5. ((equalp a nil) (print res) (func a b c d '2 res res res))
  6. ((equalp b nil) (func (cdr a) temp c d '1 res temp temp2))
  7. ((equalp (car a) (car b)) (func (cdr a) temp c d '1 (cons (car b) res) temp temp2))
  8. (T (func a (cdr b) c d '1 res temp temp2))
  9. )
  10. )
  11. ((equalp flag '2)
  12. (cond
  13. ((equalp res nil) (func a b (cdr c) d '2 temp2 temp temp2))
  14. ((equalp c nil) (print temp2) (func a b c d '3 res d '()))
  15. ((equalp (car res) (car c))(func a b (cdr c) d '2 temp temp (remove (car c) temp2)))
  16. (T (func a b c d '2 (cdr res) temp temp2))
  17. )
  18. )
  19. (T
  20. (cond
  21. ((equalp res nil) temp2)
  22. ((equalp d nil) (func a b c temp '3 (cdr res) temp temp2))
  23. ((equalp (car res) (car d)) (func a b c (cdr d) '3 res temp (cons (car res) temp2)))
  24. (T (func a b c (cdr d) '3 res temp temp2))
  25. )
  26. )
  27. )
  28. )
Буду очень благодарна за помощь!

Решение задачи: «Изменить код»

textual
Листинг программы
  1. (defun пересечь (x y)
  2.   (cond ((null x) nil)
  3.         ((memb (car x) y) (cons (car x) (пересечь (cdr x) y)))
  4.         (t (пересечь (cdr x) y))))  
  5.  
  6. ==> ПЕРЕСЕЧЬ
  7.  
  8. (пересечь '(1 2 3 4 5 6) '(4 5 6 7 8 9))
  9.  
  10. ==> (4 5 6)
  11.  
  12. (defun отнять (x y)
  13.   (cond ((null x) nil)
  14.         ((memb (car x) y) (отнять (cdr x) y))
  15.         (t (cons (car x) (отнять (cdr x) y)))))
  16.  
  17. ==> ОТНЯТЬ
  18.  
  19. (отнять '(1 2 3 4 5 6) '(4 5 6 7 8 9))
  20.  
  21. ==> (1 2 3)
  22.  
  23. (defun задача (a b c d)
  24.  (пересечь (отнять c (пересечь a b)) d))
  25.  
  26. ==> ЗАДАЧА
  27.  
  28. (задача '(1 2 3 4) '(3 4 5 6) '(1 2 3) '(2 3 4))
  29.  
  30. ==> (2)

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


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

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

13   голосов , оценка 3.462 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут