Треки
/
Haskell
Haskell
/
Вправи
/
Послідовність
Послідовність

Послідовність

Середня

Вказівки

Дано рядок тексту (англ. string) з цифр. Потрібно вивести всі суміжні підрядки довжини n у цьому рядку в тому порядку, у якому вони йдуть.

Наприклад, рядок тексту «49142» має такі серії з 3 цифр:

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

А такі серії з 4 цифр:

  • «4914»
  • «9142»

А якщо попросити серію з 6 цифр із рядка тексту з 5 цифр, то отримаємо те, на що заслужили.

Зауважмо, що ці серії мають займати лише суміжні позиції у вхідних даних; цифри не обовʼязково мають бути послідовними за значенням.

Підказки

Щоб виконати цю вправу, потрібно реалізувати функцію slices, яка приймає text і повертає підпослідовності цифр заданого розміру:

Якщо ми розвʼязуємо цю вправу вперше, радимо дотримуватися наданої сигнатури:

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

Пізніше варто повернутися до цієї задачі та поекспериментувати з іншими типами даних і бібліотеками:

  • ByteString з пакета bytestring.
  • Sequence з пакета containers.
  • Text з пакета text.
  • Vector з пакета vector.

Набір тестів навмисно створено так, щоб приймати майже будь-яку сигнатуру типу, яка має сенс, тож радимо знайти ту, яку вважаємо найкращою.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Haskell Exercism

Час розпочати Послідовність?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Haskell, а також 107 вправ та справжнє наставництво від людей, і все це безкоштовно.