Списки. Применяющие и отображающие функционалы - Lisp

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

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

Всем снова здрасте ! Нужна помощь со следующей задачкой :

На языке Lisp сформировать список разностей соседних элементов в последовательности квадратов натуральных чисел. Убедиться , что эта последовательность представляет собой список последовательных нечётных чисел . Использовать применяющие и\или отображающие функционалы .

Как я понял условие: дан список, допустим (1 2 3 4) для начала находим квадрат элементов (1 4 9 16) потом находим разность соседних (-3 -7) Квадраты элементов списка нашёл
(defun F (w)
   (list 
     (mapcar #'(lambda (x) (if (>= x 0) (* x x) x)) w))))
дальше не получилось . Но подошёл преподаватель , сказал всё не верно ... Говорит надо чтобы , например ввёл 20 и выдало 20 натуральных чисел , дальше по условию... Кто не правильно понял условие - не знаю. памагите !)

Решение задачи: «Списки. Применяющие и отображающие функционалы»

textual
Листинг программы
(defun odd-seqp (n)
  (when (evenp n) (odd-seq n)))
 
(defun odd-seq (n &optional (m 1))
  (cond ((> m n))
        ((evenp (- (* m m) (expt (1+ m) 2))) nil)
        ((odd-seq n (+ m 2)))))
 
> (odd-seqp 100)
T

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

В коде определены две функции:

  1. odd-seqp — принимает один аргумент n и возвращает t, если n — нечётное число, и nil в противном случае.
  2. odd-seq — принимает два аргумента n и m, и возвращает t, если выполняется хотя бы одно из условий: — m больше n; — n чётное и (m * m) + (expt (1+ m) 2) также чётное. В последней строке кода вызывается функция odd-seqp с аргументом 100, и результатом будет t.

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


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

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

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