Constante de Champernowne
La constante de Champernowne es el número irracional
1 |
0.12345678910111213141516171819202122232425262728293031323334 ... |
cuya parte entera es 0 y la parte decimal se obtiene concatenado los números naturales a partir de 1.
Definir la función
1 |
productoChampernowne :: [Int] -> Int |
tal que (productoChampernowne ns) es el producto de los dígitos de la constante de Champernowne que ocupan las posiciones ns. Por ejemplo,
1 2 3 |
productoChampernowne [0,1,2] == 6 productoChampernowne [8,20] == 45 productoChampernowne [10^i-1 | i <- [0..7]] == 1470 |
Soluciones
1 2 3 4 5 6 7 8 9 10 |
import Data.Char (digitToInt) productoChampernowne :: [Int] -> Int productoChampernowne ns = product [champernowne !! n | n <- ns] -- champernowne es la sucesión de champernowne. Por ejemplo, -- ghci> take 20 champernowne -- [1,2,3,4,5,6,7,8,9,1,0,1,1,1,2,1,3,1,4,1] champernowne :: [Int] champernowne = map digitToInt (concatMap show [1..]) |