Clojure — A Base 10

Feu una funció transforma_a_base_10 que, donada una base b (2 \leq b \leq 9), retorna una altra funció (anomenem-la fret): (def fret (transforma_a_base_10 b)).

Aquesta funció fret retornada ha de ser tal que espera rebre un dígit d en base b (0 \leq d << b) que forma part del nombre, en base b, que volem expressar en base 10. La crida (fret d) retorna una altra funció que fa el mateix procés. Tot plegat acaba en cridar aquesta funció retornada amb -1, aleshores es retornarà el nombre format pels dígits que hem anat passant successivament a les funcions retornades (el primer és considerat el dígit de més pes), però expressat en base 10.

Exemple: Volem passar 101011 (en base 2) a base 10 (on 1010112=4310101011_2 = 43_{10}).

Cal fer (def h2 (transforma_a_base_10 2)), i després només cal cridar successivament les funcions retornades per les crides a h2 amb els dígits de 101011, acabant amb -1: (((((((h2 1) 0) 1) 0) 1) 1) -1) retorna 43.

Observacions

Informació del problema

Autoria: Jordi Delgado

Generació: 2026-01-25T12:59:56.227Z

© Jutge.org, 2006–2026.
https://jutge.org