Definir la función
rotacionesNumero :: Integer -> [Integer] |
rotacionesNumero :: Integer -> [Integer]
(rotacionesNumero n) es la lista de las rotaciones obtenidas desplazando el primer dígito de n al final. Por ejemplo,
rotacionesNumero 325 == [325,253,532] |
rotacionesNumero 325 == [325,253,532]
Soluciones
-- 1ª definición (por comprensión)
-- ===============================
rotacionesNumero1 :: Integer -> [Integer]
rotacionesNumero1 n = [read xs | xs <- rotaciones (show n)]
-- (rotaciones xs) es la lista de las rotaciones obtenidas desplazando
-- el primer elemento xs al final. Por ejemplo,
-- rotaciones [2,3,5] == [[2,3,5],[3,5,2],[5,2,3]]
rotaciones :: [a] -> [[a]]
rotaciones xs = take (length xs) (iterate rota xs)
-- (rota xs) es la lista añadiendo el primer elemento de xs al
-- final. Por ejemplo,
-- rota [3,2,5,7] == [2,5,7,3]
rota :: [a] -> [a]
rota (x:xs) = xs ++ [x]
-- 2ª definición (con map)
-- =======================
rotacionesNumero2 :: Integer -> [Integer]
rotacionesNumero2 n = map read (rotaciones (show n))
-- 3ª definición (sin argumentos)
-- ==============================
rotacionesNumero3 :: Integer -> [Integer]
rotacionesNumero3 = map read . rotaciones . show |
-- 1ª definición (por comprensión)
-- ===============================
rotacionesNumero1 :: Integer -> [Integer]
rotacionesNumero1 n = [read xs | xs <- rotaciones (show n)]
-- (rotaciones xs) es la lista de las rotaciones obtenidas desplazando
-- el primer elemento xs al final. Por ejemplo,
-- rotaciones [2,3,5] == [[2,3,5],[3,5,2],[5,2,3]]
rotaciones :: [a] -> [[a]]
rotaciones xs = take (length xs) (iterate rota xs)
-- (rota xs) es la lista añadiendo el primer elemento de xs al
-- final. Por ejemplo,
-- rota [3,2,5,7] == [2,5,7,3]
rota :: [a] -> [a]
rota (x:xs) = xs ++ [x]
-- 2ª definición (con map)
-- =======================
rotacionesNumero2 :: Integer -> [Integer]
rotacionesNumero2 n = map read (rotaciones (show n))
-- 3ª definición (sin argumentos)
-- ==============================
rotacionesNumero3 :: Integer -> [Integer]
rotacionesNumero3 = map read . rotaciones . show
Se puede imprimir o compartir con
2 soluciones de “Rotaciones de un número”