Все статьи | Блог студента

Первый опыт на Codewars

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

На данный момент я прошла 2 курса по Python: Сode Basics и самые основы на Хекслете. Это дало мне базовое знание синтаксиса, знакомство с тремя типами данных (строковые, числовые и кортежи) и с некоторыми видами циклов. Все эти базовые вещи, мне казалось, я хорошо поняла и усвоила.

После этого я переключилась на изучение настройки окружения и работы с Git. Но чтобы Python не забывался, я зарегистрировалась на Codewars — англоязычном сервисе с задачами по программированию.

Общие впечатления

За пару часов я решила 6 задач и перешла с последнего восьмого ранга на седьмой (самым крутым считается первый ранг). Но это не единственное достижение. Всего 6 задач сильно скорректировали мои представления о том, что я уже успела освоить в Python. 

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

Сложная задача

Одну из 6 задач я решала около часа. Решила при помощи кортежей (единственный составной тип данных, который я знала в Python на тот момент) и двух циклов в одной функции. Выглядело громоздко, но все работало, и тесты проходили успешно. После часа сражений я была определенно горда собой. Оставалось только окончательно отправить решение. Но при попытке сабмита Codewars стал ругаться, что выполнение кода занимает слишком много времени и нужно его оптимизировать. 

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

При решении первых задач на Codewars мне случилось узнать, что в Python для работы с векторами существуют специальные библиотеки, которые нужно импортировать. А также, что вместо векторов можно использовать списки. В тему я не углублялась, но решила попробовать списки для оптимизации и посмотреть, что будет.

Я заменила кортеж в своем решении на список, сделала необходимые правки с переводом строковых и числовых данных и, вуаля, Codewars понравилась моя оптимизация — решение прошло. Я стала еще больше гордиться собой, чем просто после зеленых тестов: как же, соединила прошлые знания с новыми. Но снова сюрприз.

После отправки моего решения мне стали доступны решения других людей для этой задачи. И я увидела, что вместо громоздкой функции с двумя циклами в лучших решениях была всего одна(!) строка с арифметическим действием. Я не заметила элементарную закономерность в исходных данных задачи! Вот это был урок...

Итог

Обязательно попробуйте свои силы на Codewars или аналогичных сервисах. Сильные эмоции гарантированы. Плюс, вы сможете отработать синтаксис вашего нового языка и алгоритмы решения задач. И прочувствуете ограничения тех конструкций языка, которые знаете на данный момент. Ну и конечно, сможете сравнить свое решение с сотнями и тысячами других — и с лучшими, и с худшими (решения имеют рейтинг и сортировку). Все это поможет лучше понять ваш текущий уровень в программировании и конкретном языке и замотивирует узнавать больше и глубже.

PS. У Хекслета на Codewars есть собственный клан. Если в него вступить, то можно соревноваться не только со всем миром, но и в пределах клана. 

Аватар пользователя ema
ema 05 ноября 2020
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
1 декабря 8 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
1 декабря 8 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
1 декабря 8 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
1 декабря 8 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
1 декабря 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Новый
Создает веб-приложения со скоростью света
1 декабря 5 месяцев