Преобразовать список цифр в число - Lisp

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

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

2. L=(ln,...,li ...,l0) – список, элементами которого являются числа в диапазоне от 0 до 9. Подсчитать число, получающееся по правилу: ln*10n+... +li*10i+...+l0 Пример: (f ‘(1 2 3 4)) Результат: 1234

Решение задачи: «Преобразовать список цифр в число»

textual
Листинг программы
(define (list->number lst)
  (foldl (lambda (a b) (+ a (* 10 b))) 0 lst))
 
(let ((lst '((1 2 3 4)
             (1)
             ())))
  (map list->number lst))
;'(1234 1 0)

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

В данном коде представлена функция list->number, которая принимает в качестве аргумента список lst и возвращает число. Она преобразует список цифр в число. Алгоритм работы функции следующий:

  1. foldl применяет функцию a b к числу 0 и списку lst в порядке обратном к порядку элементов списка.
  2. map применяет функцию list->number к каждому элементу списка lst. В данном случае, список lst содержит два элемента: ((1 2 3 4) и (1). Первый элемент списка преобразуется в число 1234, а второй элемент списка преобразуется в число 1. Результатом работы кода будет список (1234 1 0).

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


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

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

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