Список из разных элементов двух списков - Lisp
Формулировка задачи:
- (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)
- )
Решение задачи: «Список из разных элементов двух списков»
- (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)
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д