Δεδομένης μιας συμβολοσειράς από ψηφία, εμφάνισε όλες τις συνεχόμενες υποσυμβολοσειρές μήκους n που υπάρχουν μέσα της, με τη σειρά που εμφανίζονται.
Για παράδειγμα, η συμβολοσειρά "49142" έχει τις παρακάτω ακολουθίες 3 ψηφίων:
Και τις παρακάτω ακολουθίες 4 ψηφίων:
Και αν ζητήσεις ακολουθία 6 ψηφίων από μια συμβολοσειρά 5 ψηφίων, σου αξίζει ό,τι σου τύχει.
Σημείωσε ότι αυτές οι ακολουθίες χρειάζεται μόνο να καταλαμβάνουν γειτονικές θέσεις στην είσοδο· τα ψηφία δεν χρειάζεται να είναι αριθμητικά διαδοχικά.
Για να ολοκληρώσεις αυτή την άσκηση, χρειάζεται να υλοποιήσεις τη συνάρτηση slices, που παίρνει ένα κείμενο και επιστρέφει τις υπακολουθίες ψηφίων με συγκεκριμένο μέγεθος:
Αν λύνεις αυτή την άσκηση για πρώτη φορά, καλό είναι να μείνεις στην υπογραφή που σου δίνεται:
slices :: Int -> String -> [[Int]]
Αργότερα, μπορεί να είναι καλή ιδέα να ξαναδείς αυτό το πρόβλημα και να πειραματιστείς με άλλους τύπους δεδομένων και βιβλιοθήκες:
ByteString, από το πακέτο bytestring.Sequence, από το πακέτο containers.Text, από το πακέτο text.Vector, από το πακέτο vector.Η σουίτα δοκιμών σχεδιάστηκε επίτηδες ώστε να δέχεται σχεδόν οποιαδήποτε υπογραφή τύπου έχει νόημα, οπότε σε ενθαρρύνουμε να βρεις αυτή που πιστεύεις ότι είναι η καλύτερη.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Haskell με 107 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.