Séries

Séries

Médio

Instruções

Dada uma string de dígitos, produza todas as substrings contíguas de comprimento n dessa string, na ordem em que aparecem.

Por exemplo, a string "49142" tem as seguintes séries de 3 dígitos:

  • "491"
  • "914"
  • "142"

E as seguintes séries de 4 dígitos:

  • "4914"
  • "9142"

E se você pedir uma série de 6 dígitos a partir de uma string de 5 dígitos, você merece o que receber.

Repare que essas séries só precisam ocupar posições adjacentes na entrada; os dígitos não precisam ser numericamente consecutivos.

Dicas

Para completar este exercício, você precisa implementar a função slices, que recebe um texto e retorna as subsequências de dígitos com um tamanho especificado:

Se esta for a primeira vez que você resolve este exercício, é recomendável usar a assinatura fornecida:

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

Mais tarde, pode ser uma boa ideia voltar a este problema e brincar com outros tipos de dados e bibliotecas:

  • ByteString, do pacote bytestring.
  • Sequence, do pacote containers.
  • Text, do pacote text.
  • Vector, do pacote vector.

A suíte de testes foi projetada de propósito para aceitar quase qualquer assinatura de tipo que faça sentido, então vale a pena você procurar a que considerar melhor.

Editar via GitHub O link abre em uma nova janela ou aba
Haskell Exercism

Tudo pronto para começar Séries?

Crie sua conta no Exercism para aprender e dominar Haskell com 107 exercícios e mentoria humana de verdade, tudo de graça.