Функция для проверки одинаковых атомов - Lisp

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

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

Открыла впервые Lisp и понятия не имею,как можно реализовать задачу.Подскажите,пожалуйста Задача: Написать функцию,которая проверяет одинаковые ли атомы расположенные в двух S-выражениях на соответствующих местах.

Решение задачи: «Функция для проверки одинаковых атомов»

textual
Листинг программы
  1. (defun *equalp (x1 x2)
  2.   (cond ((or (atom x1) (atom x2)) (eq x1 x2))
  3.         (t (and (*equalp (car x1) (car x2)) (*equalp (cdr x1) (cdr x2))))))
  4.  
  5. ==> *equalp
  6.  
  7. (*equalp '(1 2 3) '(1 2 3))
  8.  
  9. ==> T
  10.  
  11. (*equalp '(1 2 3) '(1 2))
  12.  
  13. ==> NIL
  14.  
  15. (*equalp '(1 2 3) '(1 (2) 3))
  16.  
  17. ==> NIL
  18.  
  19. (*equalp '(1 (2) 3) '(1 (2) 3))
  20.  
  21. ==> T
  22.  
  23. (*equalp '(1 ((2) 3)) '(1 ((2) 3)))
  24.  
  25. ==> T

Объяснение кода листинга программы

В коде определена функция equalp для проверки одинаковых атомов. Функция equalp принимает два аргумента x1 и x2. Если оба аргумента являются атомами и равны друг другу, то возвращается значение T (истина). Если оба аргумента не являются атомами, то рекурсивно вызывается функция equalp для их кар и цик. Если хотя бы один из аргументов является атомом или если хотя бы одна из пар равных аргументов не является атомом, то возвращается значение NIL (ложь). Примеры вызовов функции equalp:

  1. (*equalp '(1 2 3) '(1 2 3)) -> T
  2. (*equalp '(1 2 3) '(1 2)) -> NIL
  3. (*equalp '(1 2 3) '(1 (2) 3)) -> NIL
  4. (*equalp '(1 (2) 3) '(1 (2) 3)) -> T
  5. (*equalp '(1 ((2) 3)) '(1 ((2) 3))) -> T

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


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

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

11   голосов , оценка 4.545 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы