Series

Series

Intermedia

Instrucciones

Dado un string de dígitos, devuelve todos los substring contiguos de longitud n que aparezcan en él, en el orden en que aparecen.

Por ejemplo, el string «49142» tiene las siguientes series de 3 dígitos:

  • «491»
  • «914»
  • «142»

Y las siguientes series de 4 dígitos:

  • «4914»
  • «9142»

Y si pides una serie de 6 dígitos de un string de 5 dígitos, te mereces lo que te toque.

Ten en cuenta que estas series solo tienen que ocupar posiciones adyacentes en el string que recibes; los dígitos no necesitan ser numéricamente consecutivos.

Pistas

Para completar este ejercicio necesitas implementar la función slices, que toma un text y devuelve las subsecuencias de dígitos con un tamaño especificado:

Si es la primera vez que resuelves este ejercicio, se recomienda que te quedes con la firma proporcionada:

slices :: Int -> String -> [[Int]]

Más adelante, puede ser buena idea volver a este problema y jugar con otros tipos de datos y bibliotecas:

  • ByteString, del paquete bytestring.
  • Sequence, del paquete containers.
  • Text, del paquete text.
  • Vector, del paquete vector.

La suite de tests se diseñó a propósito para aceptar casi cualquier firma de tipo que tenga sentido, así que te animamos a encontrar la que creas que es la mejor.

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

¿Todo listo para empezar Series?

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