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

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

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

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

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

textual
Листинг программы
(defun *equalp (x1 x2)
  (cond ((or (atom x1) (atom x2)) (eq x1 x2))
        (t (and (*equalp (car x1) (car x2)) (*equalp (cdr x1) (cdr x2))))))
 
==> *equalp
 
(*equalp '(1 2 3) '(1 2 3))
 
==> T
 
(*equalp '(1 2 3) '(1 2))
 
==> NIL
 
(*equalp '(1 2 3) '(1 (2) 3))
 
==> NIL
 
(*equalp '(1 (2) 3) '(1 (2) 3))
 
==> T
 
(*equalp '(1 ((2) 3)) '(1 ((2) 3)))
 
==> 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
Похожие ответы