Étant donné une string de chiffres, renvoie toutes les sous-chaînes contiguës de longueur n de cette string, dans l'ordre où elles apparaissent.
Par exemple, la string « 49142 » contient les séries de 3 chiffres suivantes :
Et les séries de 4 chiffres suivantes :
Et si tu demandes une série de 6 chiffres à partir d'une string de 5 chiffres, tant pis pour toi.
Note que ces séries doivent seulement occuper des positions adjacentes dans l'entrée ; les chiffres n'ont pas besoin d'être consécutifs au niveau numérique.
Pour réaliser cet exercice, tu dois implémenter la fonction slices, qui prend un texte et renvoie les sous-séquences de chiffres d'une taille donnée :
Si c'est la première fois que tu résous cet exercice, il est recommandé de t'en tenir à la signature fournie :
slices :: Int -> String -> [[Int]]
Plus tard, tu peux envisager de revenir sur ce problème et de jouer avec d'autres types de données et bibliothèques :
ByteString, du paquet bytestring.Sequence, du paquet containers.Text, du paquet text.Vector, du paquet vector.La suite de tests a été délibérément conçue pour accepter presque n'importe quelle signature de type qui a du sens, alors on t'encourage à trouver celle qui te semble la meilleure.
Inscris-toi sur Exercism pour apprendre et maîtriser Haskell avec 107 exercices, et un vrai mentorat humain, le tout gratuitement.