Из задаваемой списка нулей и единиц построить десятичное число - Lisp

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

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

Помогите реализовать функцию (TEN n x), которая выдает число в десятичной системе счисления, образованное первыми n элементами списка x, состоящего из нулей и единиц. Например: > (TEN 3 '(1 0 0 1 0)); вызов 4; результат

Решение задачи: «Из задаваемой списка нулей и единиц построить десятичное число»

textual
Листинг программы
(defun bin-deci (m w &optional (n 0))
  (if (null w) n (bin-deci m (cdr w) (+ (car w) n n))))
 
(defun bin-decim (m w)
  (bin-deci m (subseq w 0 m)))
 
> (bin-decim 3 '(1 0 0 0 1))
4
> (bin-decim 4 '(1 0 0 0 1))
8
> (bin-decim 5 '(1 0 0 0 1))
17

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

В коде представлена функция bin-decim, которая принимает три аргумента: m, w и n. Первые два аргумента - это m и w, которые являются списками. Третий аргумент n - это число, инициализирующее результат. Если третий аргумент не задан, он по умолчанию равен 0. В функции bin-decim используется рекурсивный подход для преобразования бинарного числа в десятичное. Функция проверяет базовый случай, когда список w пуст. Если это так, она возвращает значение n. В противном случае она вызывает саму себя с m равным w, и n равным сумме car w и n. Вторая функция bin-deci - это вспомогательная функция, которая принимает два аргумента: m и w. Она просто вызывает bin-decim с аргументами m и w, ограничивая список w до m элементов. Примеры вызовов функций показывают, как работает код. Первый пример (bin-decim 3 '(1 0 0 0 1)) преобразует бинарное число (1 0 0 0 1) длиной 5 в десятичное число 4. Второй пример (bin-decim 4 '(1 0 0 0 1)) преобразует бинарное число (1 0 0 0 1) длиной 5 в десятичное число 8. Третий пример (bin-decim 5 '(1 0 0 0 1)) преобразует бинарное число (1 0 0 0 1) длиной 5 в десятичное число 17.

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


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

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

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