Преобразовать список цифр в число - 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
и возвращает число. Она преобразует список цифр в число.
Алгоритм работы функции следующий:
foldl
применяет функциюa b
к числу 0 и спискуlst
в порядке обратном к порядку элементов списка.map
применяет функциюlist->number
к каждому элементу спискаlst
. В данном случае, списокlst
содержит два элемента:((1 2 3 4)
и(1)
. Первый элемент списка преобразуется в число 1234, а второй элемент списка преобразуется в число 1. Результатом работы кода будет список(1234 1 0)
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д