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