Резюме:

В моем последнем посте в 10-й день # 100DaysOfCode я публично пообещал написать статью о моем опыте работы с # 100DaysOfCode 10-го, 20-го ... и так до 100-го дня.

Прежде чем приступить к этой задаче, я хорошо разбирался в программировании на C. Я легко освоил C ++, так как он очень похож на C. В прошлом семестре один из предметов сильно зависел от Python, и, бросившись в самый конец бассейна, мне было трудно найти поверхность. Я знаю, это иронично, потому что Python - это язык программирования более высокого уровня по сравнению с C / C ++.

За последние 20 дней я выполнил 20 испытаний на HackerRank. Большинство этих проблем я решил на Python.

Скорость:

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

Метод бумаги и карандаша:

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

Я беру один из тестовых примеров и предлагаю наивный алгоритм, который решает проблему и дает ожидаемый результат. Затем я «очищаю» код, чтобы сделать его более эффективным и убедиться, что он работает во всех крайних случаях.

Более эффективный код:

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

Таким образом, я сосредоточен не только на решении проблемы, но и на обеспечении ее эффективности. Это большой плюс, потому что заставляет меня придумывать лучшие и разумные решения.

Инструменты, которые помогли мне сохранить мотивацию:

  • Сохранение моего профиля на GitHub: запись моего прогресса и наблюдение за этими крошечными зелеными непрерывными квадратами в обзоре вкладов делает меня счастливым и служит стимулом не прерывать мой результат. Кроме того, наличие регулярно обновляемого профиля на GitHub является плюсом для вашего портфолио.

  • # 100DaysOfCode GitHub repo: Регистрация моего прогресса в определенном формате, как показано ниже, помогает понять, с какими проблемами я столкнулся и как я могу улучшить их в следующий раз. Это напоминает мне, в первую очередь, о цели принятия этого вызова.

  • Общественные обязательства: написание этих статей и их публикация. Держит меня подотчетным и ставит передо мной краткосрочные цели. Очень похоже на спринты в Agile-управлении проектами.

План на следующие 10 дней:

Мне начинает скучать решать только задачи Python на HackerRank, поэтому я планирую начать работать над тем, чтобы вносить свой вклад в проекты с открытым исходным кодом вместе с решением этих проблем. Однако я не смогу решить столько проблем, сколько у меня есть за последние 10 дней. Просто хочу, чтобы все было интересно.

В следующем посте я напишу, как продвигается мое новое дело.