Дано рядок тексту (англ. string) з цифр. Потрібно вивести всі суміжні підрядки довжини n у цьому рядку в тому порядку, у якому вони йдуть.
Наприклад, рядок тексту «49142» має такі серії з 3 цифр:
А такі серії з 4 цифр:
А якщо попросити серію з 6 цифр із рядка тексту з 5 цифр, то отримаємо те, на що заслужили.
Зауважмо, що ці серії мають займати лише суміжні позиції у вхідних даних; цифри не обовʼязково мають бути послідовними за значенням.
Щоб виконати цю вправу, потрібно реалізувати функцію slices,
яка приймає text і повертає підпослідовності цифр заданого
розміру:
Якщо ми розвʼязуємо цю вправу вперше, радимо дотримуватися наданої сигнатури:
slices :: Int -> String -> [[Int]]
Пізніше варто повернутися до цієї задачі та поекспериментувати з іншими типами даних і бібліотеками:
ByteString з пакета bytestring.Sequence з пакета containers.Text з пакета text.Vector з пакета vector.Набір тестів навмисно створено так, щоб приймати майже будь-яку сигнатуру типу, яка має сенс, тож радимо знайти ту, яку вважаємо найкращою.