Примечание автора (Дхрув Котари): - Здравствуйте, читатели! Эта статья основана на подходе к соревновательному программированию, ориентированном на новичков. Все мнения, высказанные в этой статье, отражают мои собственные взгляды, которые, на мой взгляд, подходят новичку в мире соревновательного программирования.
Соревновательный человек всегда побеждает. Неконкурентоспособный человек всегда проигрывает.
~ Д-р. Т. П. Чиа
Что такое соревновательное программирование?
На мой взгляд, соревновательное программирование - это спорт. Спорт, основанный на умении решать проблемы, мыслительных способностях, тестировании скорости, регулярности, а если быть точным. Конкурентное программирование поможет вам построить логику и реализовать ее для поиска решений реальной проблемы. Мозговой штурм вашего кода определенно улучшит ваши навыки программирования, а также поможет расширить ваши мыслительные способности. Таким образом, ежедневная практика соревновательного программирования поможет вам в овладении этим конкретным языком. И поверьте, если вы регулярно занимаетесь этим видом спорта, вы уже готовы к техническим этапам собеседований. Итак, теперь давайте окунемся в океан соревновательного программирования.
Как начать соревновательное программирование?
Честно говоря, сейчас нет особого подходящего времени, чтобы начать это делать, но рекомендуется начинать как можно раньше. Все мы слышали замечательную поговорку: Ранняя пташка ловит червя. Верно? Поэтому сделать это никогда не поздно, но начинать следует с того момента, когда вы узнаете об этом.
Просто начните. Возьмите ноутбук, ручку и книгу. Получите формулировку проблемы, начните думать о логике, создайте алгоритм и, наконец, реализуйте его.
Теперь все мы знаем, что живем в эпоху Интернета, которая дает нам множество возможностей для обучения бесплатно. Итак, чего мы ждем, давайте воспользуемся этими возможностями. Есть несколько удивительных платформ для соревновательного программирования, с помощью которых новичок может начать свой путь.
Хакерранк
На мой взгляд, это одна из лучших платформ для начинающих. Его пользовательский интерфейс прост и удобен для пользователя. Существуют разные категории, такие как решение проблем и алгоритмы, математика, статистика, знание языков (C, C ++, JAVA, Python), SQL и многие другие. Вопросы варьируются от ЛЕГКО до СЛОЖНО до РАСШИРЕННЫЙ. Наконец, вы одарены звездочками, которые действительно мотивируют вас делать более.
Codechef
Проведя несколько дней на Hackerrank и получив несколько золотых значков, вы можете начать с CodeChef. Постановления о проблемах основаны на мышлении более высокого порядка, чем Hackerrank, но если вы нацелены на отличные соревнования, такие как ACM-ICPC, то это одна из лучших платформ для практики. Codechef организует конкурсы, такие как Monthly Long Challenges, Cook-off и Lunch-time, которые показывают ваш рейтинг / позицию как в национальном, так и в глобальном масштабе, чтобы вы могли узнать, где вы сейчас находитесь в мире.
Вот список еще нескольких платформ для практики (для среднего уровня и выше): -
Знания не имеют ценности, если вы не применяете их на практике.
Новичку следует помнить о самом важном!
- Всегда читайте ограничения - каждая формулировка проблемы состоит из вопроса, описания функции, форматов ввода-вывода и наиболее важных ограничений. Они играют жизненно важную роль в вашем коде. Типы данных выбираются на основе предоставленных ограничений.
Например, говоря о C ++,
если ограничения имеют вид (0 ≤ arr [i] ≤ 10¹⁰), для этого нельзя использовать обычный тип данных int. Здесь вам нужно использовать тип данных long long int.
2. Не пишите дополнительный код. Придерживайтесь формата ввода и не пишите никаких дополнительных строк в коде. Например, избегайте записи в традиционном / неподходящем формате, например «Введите количество элементов в массиве» и «Результатом кода является . »
3. Настойчивость всегда грандиознее, чем результативность. Сосредоточьтесь на практике, а не ожидайте результатов в первый же день. «Подождите! даже на чудеса уходит немного времени ». Так что будьте последовательны, старайтесь задавать хотя бы 5 вопросов каждый день и уделяйте каждому вопросу много времени. Не сдавайся легко. НАВИГАЙТЕ СВОИ ОГРАНИЧЕНИЯ и СОХРАНИТЕ ТЕРПЕНИЕ.
4. Анализируйте свой код на основе пространственной и временной сложности. Как конкурентный программист, очень важно знать временную и пространственную сложность ваш код. Потому что ваш код оценивается по этим параметрам, и, следовательно, вы можете улучшить свой код, уменьшив эти сложности.
5. Структуры данных и алгоритмы: приверженцы кодирования. Не зная DS-A, далеко не уедешь в этом путешествии. Сохраняйте привычку регулярно изучать новые алгоритмы и методы и старайтесь реализовывать эти алгоритмы, решая задачи. Это поможет вам создавать коды с уменьшенным комплексом кода по времени и пространству.
Советы и предложения: -
- Не зацикливайтесь на нескольких языках. Придерживайтесь одного языка, такого как C ++, JAVA или Python и т. д. На мой взгляд, я бы рекомендовал C ++ по сравнению с любым другим языком из-за его простой синтаксис и более высокая скорость.
- Отладьте свой код. Очень важно находить ошибки в собственном коде, чтобы их можно было избежать в следующий раз.
- Анализируйте чужой код. Обычно рекомендуется анализировать чужой код. Например: при выполнении задач на Hackerrank после решения задачи просто перейдите в раздел «Обсуждения» и прочитайте решения других людей, которые дадут вам лучшие и уникальные идеи для решения того же вопроса.
- Узнавайте новое. Прочтите о различных стилях и методах кодирования, таких как рекурсия, отслеживание с возвратом, динамическое программирование и многих других.
- И наконец, ПОЛЮБИТЕ СВОЙ КОД. Я не думаю, что есть необходимость объяснять это дальше xD. Верно!
Так чего же вы ждете… просто идите и пишите код !!!
Спасибо, что были со мной до сих пор. Вот вам бонусный балл!
Для визуализации и отладки существует потрясающий веб-сайт, который обеспечивает визуализацию в реальном времени, так что вы можете отслеживать и визуализировать каждую строку вашего кода. Это действительно очень удобный инструмент для новичка, так как он может знать, как работает его код.
- Щелкните здесь для визуализации кода C ++.
- Щелкните здесь для визуализации кода JAVA.
- Щелкните здесь, чтобы увидеть код PYTHON.
Несколько статей, которые необходимо прочитать: -
- Https://www.codechef.com/getting-started
- Https://www.geeksforgeeks.org/how-to-prepare-for-competitive-programming/
- Https://www.hackerearth.com/practice/notes/getting-started-with-the-sport-of-programming/
- Https://www.freecodecamp.org/news/the-10-most-popular-coding-challenge-websites-of-2016-fb8a5672d22f/
- Https://www.codechef.com/certification/data-structures-and-algorithms/prepare
Итак, в заключение я хотел бы сказать, что настойчивость ведет к чудесам. Отсюда практика, практика и практика и, наконец, что не менее важно, направляют и мотивируют других погрузиться в глубокий океан КОНКУРЕНТОСПОСОБНОГО ПРОГРАММИРОВАНИЯ!
БЛАГОДАРНОСТЬ!