Série

Série

Médio

Instruções

Dada uma string de algarismos, produz todas as substrings contíguas de comprimento n dessa string, pela ordem em que aparecem.

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

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

E as seguintes séries de 4 algarismos:

  • "4914"
  • "9142"

E se pedires uma série de 6 algarismos a uma string de 5 algarismos, mereces tudo o que te acontecer.

Repara que estas séries só têm de ocupar posições adjacentes na string de entrada; os algarismos não precisam de ser numericamente consecutivos.

Dicas

Para completar este exercício, precisas de implementar a função slices, que recebe um texto e devolve as subsequências de algarismos com um tamanho especificado:

Se é a primeira vez que resolves este exercício, é recomendável que uses a assinatura fornecida:

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

Mais tarde, pode ser boa ideia revisitar este problema e experimentar outros tipos de dados e bibliotecas:

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

O conjunto de testes foi concebido intencionalmente para aceitar quase qualquer assinatura de tipo que faça sentido, por isso encorajamos-te a encontrar a que achas que é a melhor.

Editar via GitHub A ligação abre numa nova janela ou separador
Haskell Exercism

Estás pronto para começar Série?

Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.