Напишите функцию, возвращающую Т, если одинаковые атомы расположены в списках x и y в одном и том же порядке - Lisp
Формулировка задачи:
Напишите функцию, возвращающую Т, если одинаковые атомы расположе-
ны в списках x и y в одном и том же порядке.
Решение задачи: «Напишите функцию, возвращающую Т, если одинаковые атомы расположены в списках x и y в одном и том же порядке»
textual
Листинг программы
(defun task (s1 s2) (equal (remove-if-not (lambda (x) (member x s1)) s2) (remove-if-not (lambda (x) (member x s2)) s1))) ==> TASK (task '(1 2 3 4) '(6 2 5 4)) ==> T (task '(1 2 3 4) '(6 2 5 4 8 9)) ==> T (task '(1 2 3 4 9) '(6 2 5 4 8 9)) ==> T (task '(1 2 3 9 4) '(6 2 5 4 8 9)) ==> NIL
Объяснение кода листинга программы
В коде определена функция task
, которая принимает два аргумента - списки s1
и s2
.
Функция возвращает T
, если все одинаковые атомы из списка s1
встречаются в том же порядке в списке s2
, и NIL
в противном случае.
В функции используется следующая логика:
- С помощью
remove-if-not
из спискаs2
удаляются все элементы, которые не встречаются в спискеs1
. - С помощью
remove-if-not
из спискаs1
удаляются все элементы, которые не встречаются в спискеs2
. - Сравниваются полученные списки. Если они равны, то возвращается
T
, иначе возвращаетсяNIL
. Примеры вызовов функцииtask
: (task '(1 2 3 4) '(6 2 5 4))
. В этом случае функция вернетT
, так как все одинаковые атомы из списка(1 2 3 4)
встречаются в том же порядке в списке(6 2 5 4)
.(task '(1 2 3 4) '(6 2 5 4 8 9)). В этом случае функция также вернет
T, так как все одинаковые атомы из списка
(1 2 3 4)встречаются в том же порядке в списке
(6 2 5 4 8 9)`.(task '(1 2 3 9 4) '(6 2 5 4 8 9)). В этом случае функция вернет
NIL, так как список
(1 2 3 9 4)содержит дополнительный элемент
'9', которого нет в списке
(6 2 5 4 8 9)`.(task '(1 2 3 9 4) '(6 2 5 4 8 9)). В этом случае функция также вернет
NIL, так как список
(1 2 3 9 4)содержит дополнительный элемент
'4', которого нет в списке
(6 2 5 4 8 9)`.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д