Где Решать Задачи По Программированию?

Где Решать Задачи По Программированию?

Когда я начал изучать программирование, долго не мог найти место, где можно попрактиковаться в решении задач. В процессе поисков наткнулся на сайт Киберфорум. Туда кто угодно мог выкладывать задачи, например, часто писали студенты, которые не могут решить лабораторки. Конечно обитали там и разработчики. Их было мало и обсуждали они более серьёзные вещи. На этом форуме я и засел на долгое время.

Где Решать Задачи По Программированию?

Прошло несколько лет, появились десятки специальных сайтов-тренажёров с задачками по программированию. Однако для новичков вопрос «где практиковаться» до сих пор остаётся открытым, судя по комментариям в моих соцсетях. Поэтому в этой статье я расскажу о 5 лучших сайтах с задачами по программированию на которых ты можешь наработать практику и закрепить теорию. Меня зовут Макс. Я один из авторов YouTube-канала PyLounge. Поехали!

CodeWars

Где Решать Задачи По Программированию?

Codewars –онлайн-тренажёр с задачами на различные темы. По моим наблюдениям, это одна из самых популярных в СНГ площадок подобного рода. Здесь можно отрабатывать синтаксис языка, взяться за решение алгоритмических задач или что-то продвинутое по типу шаблонов проектирования. Решать упражнения можно на любом из 60 языков программирования. Все задачи разделены на уровни: с 1 по 8 kyu. Чем ниже номер уровня задачи, тем она сложнее. Соответственно 8 kyu - самые легкие задачи, 1 kyu – самые тяжёлые. Твоё решение сразу проверяются встроенными тестами на сайте. Можно посмотреть или обсудить решения других пользователей. Среди участников есть таблица лидеров, где можно померяться своим kyu'eм. Из минусов – русский язык на сайте отсутствует. Так что придётся напрячь ваши знания «Ландан из э капитал оф инглишь» или пользоваться переводчиком.

Кстати, у нас на канале есть видео, где я решаю задачи с CodeWars на языке Python. Советую посмотреть, чтобы получше ознакомиться площадкой.

CodeForces

Где Решать Задачи По Программированию?

Фишка платформы в том, что на ней регулярно проводятся соревнования по программированию. Даже некоторые официальные олимпиады, по типу ICPC, идут на базе CodeForces.

Примерно раз в неделю (иногда чаще, иногда реже) проводятся 2-х часовые соревнования. Они называются «Rounds».

Предлагается несколько задач различной сложности. Решать можно в любом порядке, на любом доступном языке программирования. Сложность определяет сколько баллов вы получите за правильное решение. Проверка решений автоматическая. Для участия в раунде нужно заранее зарегистрироваться.

Каждый участник имеет «рейтинг» — число, которое показывает насколько хорошо он решает задачи на раундах. Если выступать хорошо – рейтинг растёт, плохо – падает.

В зависимости от рейтинга все участники делятся на 3 дивизиона. Раунды обычно и проводятся по этим дивизионам.

Есть специальные «Образовательные соревнования» (Educational Rounds) или «Взломы». Суть как в раундах, с одним отличием. Если вы правильно решили задачу, то можете смотреть решения других пользователей в течении 12 часов. Смотреть не просто так, а чтобы находить в них ошибки.

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

После каждого конкурса выкладывают разборы задач в блогах. Для развития собственных скилов полезно анализировать чужие решения. Ещё кстати есть обсуждения.

Иногда на сайте проводятся просто тематические олимпиады, например, первая командная пред-Хэллоуинская интернет-олимпиада.

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

Всё это затевается исключительно в целях обучения и саморазвития, поэтому никаких призов кроме баллов получить нельзя. Опыт и навыки – это самый ценный приз. А ещё их Telegram спонсирует. Пашок в ерунду вкладываться точно не будет.

Project Euler

Где Решать Задачи По Программированию?

Project Euler – сайт с коллекцией задач разной сложности. Задания представлены в виде задачек по математике, геометрии и информатике. Например, найти сумму всех чисел последовательности.

На сайте нет онлайн редактора кода. Решаете у себя на компьютере, а затем пишите ответ в форму на сайте.

Доступно 760 упражнений. После того как дан ответ, можно войти в ветку форума этой задачи и посмотреть, как её решили другие. Похожие испытания дают на некоторых собеседованиях. Так проверяют уровень алгоритмической подготовки программиста. Если ты хочешь этот уровень подтянуть, то милости просим на Project Euler. Но только на английском языке.

LeetCode

Где Решать Задачи По Программированию?

Здесь тренируются программисты, которые хотят устроиться в крупную компанию. Задачки с LeetCode, или похожие на них, дают на собеседованиях в Google, Яндекс, Microsoft и т.д.

LeetCode – это в первую очередь сайт с задачами по спортивному олимпиадному программированию.

Доступно 1900 задач и 3 уровня сложности. Ориентированы упражнения на алгоритмы и структуры данных. Например, надо найти самую длинную подстроку без повторяющихся символов или обойти граф в ширину. Решать это можно на 20 языка программирования. Проверяется всё автоматически.

Можно подсмотреть решения, но без premium подписки не всегда. Однако всегда доступен раздел с обсуждениями. C платной подпиской ещё можно просмотреть подборки задач по популярным компаниям. Например, подборку задач от Google.

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

Также на сайте есть туториалы и раздел со статьями, где разбираются разные темы. Ещё и соревнования иногда проходят. Засесть можно плотно.

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

Я давно варюсь в сфере IT. Смотрю интервью, слушаю подкасты, читаю статью, общаюсь с другими разработчиками. И по моим наблюдениям, программисты со всего мира используют LeetCode для подготовки к техническим собеседованиям.

Kaggle

Где Решать Задачи По Программированию?

Наш канал преимущественно посвящён языку Python. А как известно Python всем Data Scientist’ам отец. Поэтому я не мог не добавить в эту подборку сайт Kaggle.

Kaggle отличается от предыдущих платформ тем, что тут нет алгоритмических задач. Kaggle ориентирован на исследовательские задачи, связанные с машинным обучением и нейронными сетями. Это крупнейшая площадка для соревнований по Data Science (на момент 2017 года заявлен миллион пользователей).

Как проходит Kaggle-соревнование: организатор (часто крупная компания) публикует свой датасет, описание проблемы, сроки, критерии правильного решения. Участники решают задачу с помощью языка Python или R. Платформа автоматически проверяет решения по критериям организатора.

Лучшее решение получает приз. Просто участники — баллы в рейтинг на платформе. С помощью таких задач можно сделать себе неплохое портфолио.

Также на сайте пользователи публикуют свои наборы данных, создают и исследуют модели машинного обучения. Есть архив задач с решениями, раздел вакансий и обучающие ресурсы. Однако без английского снова никак.

Заключение

Сейчас в отличии от далёких нулевых появилось множество сайтов, где можно попрактиковаться в программировании. Есть платформы на любой вкус. Рекомендую попробовать несколько и остановиться на той, которая покажется тебе наиболее комфортной. Ещё можно брать задачи сразу с 2-3 площадок и комбинировать их. Ведь чем больше ты практикуешься, тем больше уверенности получаешь и более заметным становится твой результат.

Я поделился своей подборкой топовых сайтов для практика программирования. А теперь призываю тебя. Напиши в комментарии достойные на твой взгляд ресурсы для решения задач по программированию. Я думаю это будет интересно не только мне, но и другим читателям.

P.S. Также есть видеоверсия данной статьи на YouTube:

4444
13 комментариев

да почему вы превьюхи то не умеете делать, вот правильная

10
Ответить

Ох уж этот Leet code пиздец, ребята которые не понимают как строить системы от начала и до конца, часто не знающие банально о том как писать расширяемый код + обычно не знает что в IDE есть подцветка/автокомплит, но он ими не пользуется только vim, и что в конце концов порой надо не тупо решить задачку, а подумать о том "а точно ли это будет нужно пользователю?" и обговорить это продуктом.
Но зато 100+ задачек решил..

Делайте реальные актуальные проекты, например свой VPN сервис🌚

5
Ответить

ну задачки можно иногда решать, чтобы знание синтаксиса/библиотек подтянуть
но вообще да, нужно придумывать самому себе задачу и пытаться ее реализовать, тот же всеми любимы todo list

Ответить

Здорово конечно, но зачем мне видео если я уже все прочитал?

2
Ответить

У меня вопрос немножко не по теме: изучал тут курс по питону на степике и заметил, что в решениях задач некоторые делают решение в одну-две строки. а я обычно все расписываю подробно, то есть если цикл, то он обособлен, а не одной строчкой и т.п. Так вот глупый вопрос: что лучше, стремиться к минимум строку или всё-таки расписывать, как делаю я?

Ответить

Нужно соблюдать баланс. ) К примеру, если в языке есть синтаксический сахар, который позволяет записать что-то короче, но без потери читаемости, то лучше его использовать. Но, с другой стороны, не стоит пытаться записать все в одну строчку, в которой бы выполнялась куча разных операций. Но, пока чувство этого баланса не наработано, то лучше-таки расписывать. Такой код читается сильно проще. Особенно когда смотришь его не в IDE, а во время ревью в каком-нибудь интерфейсе гитлаба. Не стоит экономить строчки в файле, переменные, символы в названиях переменных и т.д.

4
Ответить