Rutas
/
Haskell
Haskell
/
Ejercicios
/
Gotas de lluvia
Gotas de lluvia

Gotas de lluvia

Fácil

Introducción

Gotas de lluvia es una versión un poco más compleja del reto FizzBuzz, una pregunta clásica en las entrevistas de trabajo.

Instrucciones

Tu tarea consiste en convertir un número en los sonidos de gota de lluvia que le corresponden.

Dado un número:

  • si es divisible por 3, añade «Pling» al resultado.
  • si es divisible por 5, añade «Plang» al resultado.
  • si es divisible por 7, añade «Plong» al resultado.
  • si no es divisible por 3, 5 ni 7, el resultado debe ser el número como string.

Ejemplos

  • 28 es divisible por 7, pero no por 3 ni por 5, así que el resultado sería "Plong".
  • 30 es divisible por 3 y por 5, pero no por 7, así que el resultado sería "PlingPlang".
  • 34 no es divisible por 3, 5 ni 7, así que el resultado sería "34".
Note

Una forma habitual de comprobar si un número es divisible entre otro sin que quede residuo es comparar el residuo o el módulo con cero. La mayoría de los lenguajes proporcionan operadores o funciones para una de estas operaciones, o para ambas.

Pistas

Tienes que implementar la función convert, que devuelve el número convertido en sonido de gota de lluvia. Puedes usar la signatura que se te proporciona si no tienes claro los tipos, pero no dejes que limite tu creatividad:

convert :: Int -> String

Este ejercicio trabaja con datos textuales. Por razones históricas, el tipo String de Haskell es sinónimo de [Char], una lista de caracteres. Para manejar datos textuales de forma más eficiente, se puede usar el tipo Text.

Como ampliación opcional de este ejercicio, puedes

import qualified Data.Text as T
import           Data.Text (Text)
  • Ahora puedes escribir, por ejemplo, convert :: Int -> Text y referirte a los combinadores de Data.Text como, por ejemplo, T.pack.
  • Consultar la documentación de Data.Text,
  • Después puedes sustituir todas las apariciones de String por Text en Raindrops.hs:
convert :: Int -> Text

Esta parte es totalmente opcional.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Haskell Exercism

¿Listo para empezar Gotas de lluvia?

Regístrate en Exercism para aprender y dominar Haskell con 107 ejercicios y mentoría humana real, todo gratis.

¡Análisis en profundidad de Gotas de lluvia!

Explora soluciones que usan canalizaciones funcionales, multiplicación de matrices, una solución precalculada basada en tablas mediante una macro, un enfoque orientado a objetos, un uso impresionante tanto de Python como de TCL y una edición empresarial.