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

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

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

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

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

textual
Листинг программы
  1. (define (list->number lst)
  2.   (foldl (lambda (a b) (+ a (* 10 b))) 0 lst))
  3.  
  4. (let ((lst '((1 2 3 4)
  5.              (1)
  6.              ())))
  7.   (map list->number lst))
  8. ;'(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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы