Skip to content

Latest commit

 

History

History
128 lines (80 loc) · 7.78 KB

optional-katas.md

File metadata and controls

128 lines (80 loc) · 7.78 KB

Дополнительные каты

Публикуем список дополнительных кат от тех, кто проходил обучение до вас) Все это не обязательно к выполнению, это просто для вашего собственного развития. Список будет дополняться. :)

  1. Dubstep

    Позволяет ещё немного потренироваться работать со списками. Можно написать рекурсивное решение, либо попробовать работать со свёртками, либо просто глубже поковырять стандартную библиотеку и найти в ней функции, позволяющие легко справиться с задачей.

  2. Valid braces

    Нужно проверить все ли скобки в выражении закрываются. Можно решать разными способами.

    Она заставляет задуматься, что является аналогом стека в хаскеле, и тренирует навыки обращения со свертками.

  3. Product of consecutive Fib numbers

    Нужно найти является ли переданное число произведением соседних чисел в последовательности Фибоначчи.

    Задача тренирует навыки создания рекурсии, или обращения с функциями из Data.List.

  4. Reverse words

    Перевернуть все слова по отдельности. Пробелы оставить как есть. У этой каты есть красивое решение с использованием комбинатора из Data.Function. Будет полезно познакомиться с этим модулем.

  5. Snail

    Интересная с задача с простым условием, для которой сразу понятен императивный алгоритм с вложенными циклами, но не сразу — функциональный.

    Помечена как 4-ый кью, но на самом деле достаточно первых глав LYAH и умения работать со списками.

  6. Equal sides of array

    В задаче нужно найти индекс элемента в списке, где сумма элементов списка слева будет равна сумме элементов списка справа от найденного элемента. Если же такого элемента нет, то вывести -1.

    В этой кате можно отработать работу со списками, поискать вспомогательные функции в модуле Data.List или же просто посмотреть интересные решение других людей.

  7. Go so far around to the right that you end up left

    Необходимо реализовать левую свертку через правую. Для решения нужно ознакомиться с реализацией обеих сверток и хорошо понимать, как работает каждая из них.

    Для решения нужно хорошо разобраться в принципе работы обеих сверток, так как использовать reverse = читерить.

  8. Take a Ten Minute Walk

    Нужно проверить предложенный маршрут (движение по сторонам света) на два условия: длительность (10 минут при минуте на одно перемещение) и совпадение начальной и конечной точки (вернуться туда, откуда пришёл).

    Тренирует работу со списками или использование Data.List.

  9. Highest Rank Number in an Array

    Небольшая ката для практики бесточечного стиля и работы со стандартными модулями типа Data.List, Data.Ord и т.д. на ваш выбор.

  10. Duplicate Encoder

    Простая ката, нацеленная на поиск дубликатов в массиве, что часто встречается в реальных задачах.

  11. Next bigger number with the same digits

    Ката с очевидным брутфорс-решением. Попытайтесь найти наиболее оптимальный алгоритм, потому как если написать слишком просто, то все тесты пройти не успеет.

  12. Find The Parity Outlier

    У FindOutlier множестово разных решений функциями из Data.List, или можно в лоб, сверткой, тренирует паттерн матчинг и функции как объекты первого класса.

  13. Most frequently used words in a text

    Достаточно простая ката для 4 кью. Тренирует обработку строки с использованием Data.Char и Data.List.

  14. Fibonacci, Tribonacci and friends

    Логическое продолжение каты Tribonacci, достаточно интересное и неординарное решение, тренирует мозги.

  15. Sortable Shapes

    Это простая ката 6 кью (30 минут на решение достаточно) позволит Вам потренироваться в создании пользовательского типа данных. Основной результат - это понимание реализации каких классов нужно предусмотреть для созданного типа, чтобы данные могли отправляться в функцию sort.

  16. Recurrence relations

  17. Simple Fun #74: Growing Plant

  18. Coloured Triangles

  19. Digital Root

  20. Twice linear

  21. Playing with laziness

  22. Break camelCase

  23. CamelCase Method

  24. Speed Control