Напишите функцию, возвращающую Т, если одинаковые атомы расположены в списках 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 в противном случае. В функции используется следующая логика:

  1. С помощью remove-if-not из списка s2 удаляются все элементы, которые не встречаются в списке s1.
  2. С помощью remove-if-not из списка s1 удаляются все элементы, которые не встречаются в списке s2.
  3. Сравниваются полученные списки. Если они равны, то возвращается T, иначе возвращается NIL. Примеры вызовов функции task:
  4. (task '(1 2 3 4) '(6 2 5 4)). В этом случае функция вернет T, так как все одинаковые атомы из списка (1 2 3 4) встречаются в том же порядке в списке (6 2 5 4).
  5. (task '(1 2 3 4) '(6 2 5 4 8 9)). В этом случае функция также вернетT, так как все одинаковые атомы из списка(1 2 3 4)встречаются в том же порядке в списке(6 2 5 4 8 9)`.
  6. (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)`.
  7. (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)`.

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


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

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

10   голосов , оценка 3.9 из 5
Похожие ответы