April 23rd, 2016

awesomeness

Покодила на HackerRank

Вот со мной всегда так: сама не заметила, как зарегистрировалась в очередном проекте. На этот раз это сайт HackerRank, который организует онлайн-конкурсы, помогающие нарабатывать навыки программирования. Я как-то незаметно для себя подписалась на конкурс Women's CodeSprint. Этот конкурс продолжительностью сутки стартовал в пятницу в 9 утра.

Конечно, с утра мне было совершенно не до конкурса, поскольку у детей в школе было важное мероприятие — лягушачьи скачки — и пропустить такое безобразие не представляется возможным. Потом работа, тренировка, забрать Марка с математики, рассовать детей по кроватям, наконец-то расслабиться и попить с мужем чая в долгожданной тишине. Хороший такой обычный вечер пятницы.

И тут я заглядываю в почту и там сообщение от HackerRank «наш конкурс в разгаре, но вы всё ещё можете подключиться». На часах полночь. Ладно, думаю, посмотрю одним глазком, попробую за три часа сделать пару задач.

Очнулась я, когда стало светать. Я успела решить четыре задачи из восьми: две среднего уровня и две простенькие. До конца конкурса оставалось меньше трёх часов. Поскольку я уже была готова «сворачиваться», то просто из любопытства посмотрела на обе предлагавшиеся сложные задачи. Не, не осилю — усталый мозг отказывался даже вникать в формулировку. Потом посмотрела ещё на одну, среднего уровня, и стало понятно, что это — тривиальная задача, хорошо подходящая для практики в питоне: словари, списки, сортировки туда-сюда. Собрала остатки сил и за час решила, получив за неё максимальный балл (прошла все тесты). Итог: 352 место из 2800+ участниц. Суббота прошла в тумане :)
awesomeness

Пара соображений по поводу HackerRank

Мне очень понравились идея и реализация проекта! В конкурсе продолжительностью сутки даются 8 задач разного уровня. Задачу надо запрограммировать на одном из языков и загрузить свой код на сайт. После этого его автоматически пропускают через тесты и для каждого теста сообщают статус: ok/timeout/wrong answer/segmentation fault/etc. По результату выполнения всех тестов решение получает определённый балл, от 0 до максимального для этой задачи. Код можно загружать сколько угодно раз, учитываться для данной задачи будет лучший результат.

1. Богатый выбор языков — порядка 3-4 десятков.

2. Первая задача — фактически smoke test того, что вы всё поняли правильно в плане работы с входными данными и вывода результатов.

3. Хорошее, на мой взгляд, распределение уровней сложности. На интуиции и базовых знаниях алгоритмов можно выехать вплоть до уровня "moderately difficult". При этом наивная имплементация скорее всего не позволит получить максимальный балл даже на этом уровне.

4. Соревновательный момент работает! При всей моей сумасшедшести я бы не села за новую задачу в шесть утра, если бы мне не претило позорное 500-какое-то-там место. Соревновательность других же даёт понять, каков же на самом деле мой реальный уровень и как его можно улучшить. Оно, конечно, бьёт по самолюбию, но не катастрофически.

5. Лекции по алгоритмам с Курсеры — большая подмога! А конкурс, в свою очередь, помогает научиться применять полученные на курсах знания для решения новых задач и показывает, где есть пробелы.

Итог: тем, кто хочет подтянуть свои навыки, но у кого вечно нет на это достаточно свободного времени, такие конкурсы помогут сдвинуться с мёртвой точки. Мне всё очень понравилось. Часто такие «подрывы» делать не будешь, но раз в пару-тройку месяцев мне это будет очень полезно.