Список из разных элементов двух списков - Lisp

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

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

Здраствуйте очень нужна помощь в написании простой програмы : создать новый список из елемнтов одного списка которых нету в другом \ списки должны задаваться из командной строки тоесть : (f '(1 2 3 4)'(1 2 5 6 7 8)) ==> (3 4 5 6 7 8) вот что я пробовал сделать
Листинг программы
  1. (defun c:enter(/)
  2. (initget 7)
  3. (setq mas () n 0 mas1 () mas2 () mas3() mas4())
  4. (setq i 0)
  5. (initget 7)
  6. (setq v (getint "Введите количество ел списка 1: "))
  7. (repeat v
  8. (setq i(+ i 1))
  9. (setq mas (list(getint(strcat "Введите " (itoa i) "елемент списка: " ))))
  10. (setq mas1 (append mas1 mas))
  11. );/repead
  12. (setq i 0)
  13. (setq r (getint "Введите количество ел списка 2: "))
  14. (repeat r
  15. (setq i(+ i 1))
  16. (setq mas (list(getint(strcat "Введите " (itoa i) "елемент списка: " ))))
  17. (setq mas3 (append mas3 mas))
  18. );
  19. (princ mas3)
  20. (princ mas1)
  21. (initget 7)
  22. / вот тут пробовал задействовать етот код :
  23. (defun clear (w &rest v)
  24. (loop for a in w
  25. unless (member a (loop for b in v append b))
  26. collect a))
  27. / и ничево не получается
  28. (princ)
  29. )
мои знания лиспа очень скудны все темы на форуме уже просмотрел по даному вопросу

Решение задачи: «Список из разных элементов двух списков»

textual
Листинг программы
  1. (defun task nil
  2.   (let ((lst1 (progn (print "Enter 1-st list") (read)))
  3.         (lst2 (progn (print "Enter 2-nd list") (read))))
  4.     (sym-diff lst1 lst2)))
  5.  
  6.  
  7.  
  8. ==> TASK
  9. (task)
  10.  
  11. "Enter 1-st list" (1 2 3 4 5 6)
  12. "Enter 2-nd list" (4 5 6 7 8 9)
  13.  
  14. ==> (1 2 3 7 8 9)

Объяснение кода листинга программы

В коде определена функция task, которая принимает два аргумента, но в данном случае они не используются. В функции используется конструктор списка progn, который выполняет два действия: выводит сообщение Enter 1-st list и читает список, затем выводит сообщение Enter 2-nd list и читает второй список. Далее выполняется операция разности множеств sym-diff с двумя списками, в результате чего получается список элементов, которые присутствуют только в первом или только во втором списке. Например, если первый список — (1 2 3 4 5 6), а второй список — (4 5 6 7 8 9), то результатом выполнения функции будет (1 2 3 7 8 9).

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


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

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

10   голосов , оценка 3.8 из 5

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

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

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