Как сравнить аргументы не зная их значения ?:( - Lisp

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

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

Описать функцию f(x y z) из трёх аргументов, которые формирует из своих аргументов список и выполняет его обработку . Проверить является ли третий элемент списка результатом возведения в степень первого элемента с показателем,равным второму элементу. Если является,то вернуть Т,иначе - Nil. мысль как то такая приходит в голову чтот такое но он выбивает ошибку так как сразу сравнивает аргументы ... (defun srav (x y z) (if (equal z (^ x y)) ....... ) ) заранее спасибо

Решение задачи: «Как сравнить аргументы не зная их значения ?:(»

textual
Листинг программы
(defun check (a b c)
  (eql (expt a b) c))
 
> (check 2 3 8)
T
> (check 2 3 3)
NIL

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

В коде определена функция check с тремя аргументами a, b и c. Функция проверяет, равны ли значения a и b и возвращает true (T), если они равны, и nil в противном случае. В первой строке кода используется функция expt, которая возводит число в степень. Она применяется к аргументу a, возводя его в степень, равную аргументу b. Результат этого вычисления сравнивается с аргументом c с помощью функции eql. Если они равны, то функция возвращает true, иначе возвращает nil. Во втором вызове функции check передаются аргументы 2, 3 и 8. Поскольку 2 и 3 не равны, функция возвращает nil. В третьем вызове функции check передаются аргументы 2, 3 и 3. Поскольку 2 и 3 равны, функция возвращает true.

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


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

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

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