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:
E as seguintes séries de 4 algarismos:
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.
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.
Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.