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

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

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

Здраствуйте очень нужна помощь в написании простой програмы : создать новый список из елемнтов одного списка которых нету в другом \ списки должны задаваться из командной строки тоесть : (f '(1 2 3 4)'(1 2 5 6 7 8)) ==> (3 4 5 6 7 8) вот что я пробовал сделать
(defun c:enter(/)
(initget 7)
  
 (setq mas () n 0 mas1 () mas2 () mas3() mas4())
 
    (setq i 0)
    
   (initget 7)
   (setq v (getint "Введите количество ел списка 1: "))
        (repeat v
        (setq i(+ i 1))
            (setq mas (list(getint(strcat "Введите " (itoa i) "елемент списка: " ))))
        (setq mas1 (append mas1 mas))
      );/repead
  (setq i 0)
   (setq r (getint "Введите количество ел списка 2: "))
        (repeat r
        (setq i(+ i 1))
            (setq mas (list(getint(strcat "Введите " (itoa i) "елемент списка: " ))))
        (setq mas3 (append mas3 mas))
      );
(princ mas3)
  (princ mas1)
  
  (initget 7)
 
/ вот тут пробовал задействовать етот код :
(defun clear (w &rest v)
  (loop for a in w
        unless (member a (loop for b in v append b))
        collect a))
/ и ничево не получается 
  
  (princ)
 
)
мои знания лиспа очень скудны все темы на форуме уже просмотрел по даному вопросу

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

textual
Листинг программы
(defun task nil
  (let ((lst1 (progn (print "Enter 1-st list") (read)))
        (lst2 (progn (print "Enter 2-nd list") (read))))
    (sym-diff lst1 lst2)))
 
 
 
==> TASK
(task)
 
"Enter 1-st list" (1 2 3 4 5 6)
"Enter 2-nd list" (4 5 6 7 8 9)
 
==> (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
Похожие ответы