Serie

Serie

Medio

Istruzioni

Data una stringa di cifre, produci in output tutte le sottostringhe contigue di lunghezza n in quella stringa, nell'ordine in cui compaiono.

Per esempio, la stringa «49142» ha le seguenti serie di 3 cifre:

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

E le seguenti serie di 4 cifre:

  • «4914»
  • «9142»

E se chiedi una serie di 6 cifre da una stringa di 5 cifre, ti meriti quello che ti capita.

Tieni presente che queste serie devono solo occupare posizioni adiacenti nell'input; le cifre non devono essere numericamente consecutive.

Suggerimenti

Per completare questo esercizio devi implementare la funzione slices, che prende un text e restituisce le sottosequenze di cifre di una dimensione specificata:

Se è la prima volta che risolvi questo esercizio, ti consigliamo di attenerti alla firma fornita:

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

In seguito, potrebbe essere una buona idea tornare su questo problema e sperimentare con altri tipi di dati e librerie:

  • ByteString, dal pacchetto bytestring.
  • Sequence, dal pacchetto containers.
  • Text, dal pacchetto text.
  • Vector, dal pacchetto vector.

La suite di test è stata progettata di proposito per accettare quasi qualsiasi firma di tipo che abbia senso, quindi ti incoraggiamo a trovare quella che ritieni migliore.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Haskell Exercism

Vuoi iniziare Serie?

Iscriviti a Exercism per imparare e padroneggiare Haskell con 107 esercizi e il mentoring di persone reali, tutto gratis.