Programowanie konkurencyjne dla początkujących: wyzwania Topcodera

Spisie treści:

Anonim

Co to jest programowanie konkurencyjne?

Programowanie konkurencyjne polega na rozwiązywaniu problemów związanych z kodowaniem za pomocą algorytmu i struktury danych. Uczestnicy muszą pisać kod z różnymi ograniczeniami, takimi jak ograniczenia pamięci, czas wykonania, ograniczenie kodowania, miejsce itp.

Zwycięzca jest ogłaszany na podstawie niektórych rozwiązanych problemów i czasu spędzonego na pisaniu udanych rozwiązań programistycznych. Obejmuje jednak również inne czynniki, takie jak jakość produkowanego wyniku, czas wykonania, rozmiar programu itp.

W tym samouczku dowiesz się

  • Co to jest programowanie konkurencyjne?
  • Korzyści z egzaminu z programowania konkurencyjnego
  • Historia programowania konkurencyjnego
  • Sprawdziany umiejętności na konkurencyjnych egzaminach z programowania
  • Jak zacząć?
  • Jak przygotować się do programowania konkurencyjnego?
  • Mity i rzeczywistość programowania konkurencyjnego
  • Najlepsze praktyki dotyczące konkurencyjnych egzaminów z kodowania
  • Wady konkurencyjnego programowania

Korzyści z konkurencyjnego programowania

Oto korzyści płynące z udziału w zawodach:

  • Programowanie konkurencyjne pomaga poprawić umiejętności logiczne i analityczne
  • Poprawia twoją wiedzę algorytmiczną.
  • To doskonały dodatek do Twojego CV.
  • Ulepsz swoją sieć znajomych, którzy również pasjonują się programowaniem
  • Jest obsługiwany przez znane na całym świecie organizacje, takie jak Google, Amazon, Facebook, IBM i inne.

Historia programowania konkurencyjnego

W świecie programów konkursowych najstarszym konkursem jest ACM-ICPC (International Collegiate Programming Contest). Powstał w latach 70. XX wieku i rozrósł się do 88 krajów.

Zainteresowanie wyzwaniami programistycznymi znacznie wzrosło po 2000 roku. Było to możliwe dzięki rozwojowi Internetu. Umożliwia kodowanie witryn z konkursami w celu organizowania międzynarodowych konkursów online.

Umiejętności wymagane na egzaminach z programowania konkursowego

Umiejętność Detale
Ważne umiejętności
  • Umiejętności algorytmiczne
  • Podstawowe umiejętności matematyczne
  • Umiejętności programowania
  • Umiejętności szybkiego pisania
  • Umiejętności debugowania
Pełne wyszukiwanie
  • Wyszukiwanie brutalne z wykorzystaniem całej przestrzeni poszukiwań
  • Pokonanie limitu czasu
  • Optymalizacja wyszukiwania
Dziel i rządź
  • Podzielenie problemu kodowania na mniejsze części
  • Wyszukiwanie binarne
Programowanie dynamiczne
  • Określ stan problemu
  • Szybsze i bardziej rozbudowane rekurencyjne wycofywanie się

Jak zacząć?

Oto kilka przydatnych wskazówek, które powinieneś wiedzieć przed rozpoczęciem programowania w trybie rywalizacji:

  • Ważne jest, aby wybrać język programowania, który najbardziej Ci odpowiada
  • Zarejestruj się w dowolnej witrynie z wyzwaniami kodowania online i zacznij rozwiązywać problemy praktyczne
  • Musisz nauczyć się struktur danych, które są niezbędne do rozwiązywania złożonych problemów z kodowaniem.
  • Musisz zrozumieć pojęcie złożoności w programach.
  • Naucz się ważnych wzorców programowania, takich jak rekurencja, programowanie dynamiczne itp.

Najlepsze konkurencyjne witryny programistyczne

Najważniejsze strony z najlepszymi wyzwaniami w zakresie kodowania to:

  • TopCoder
  • Coderbyte
  • Codewars
  • CodeChef
  • Codeforce
  • Hackerearth

Topcoder:

Topcoder to bardzo popularna platforma do programowania konkurencyjnego. Oferuje wiele wyzwań algorytmicznych, które możesz wykonać samodzielnie, korzystając z narzędzia do edytowania kodu. Witryna lepiej nadaje się dla zaawansowanych odbiorców.

Odwiedź tutaj: https://www.topcoder.com/

Coderbyte

Coderbyte oferuje ponad 200 różnych typów wyzwań związanych z kodowaniem, które można rozwiązać w edytorze online przy użyciu 10 różnych języków programowania. Dostarcza oficjalne rozwiązania i ponad 800 000 rozwiązań stworzonych przez użytkowników.

Odwiedź tutaj: https://coderbyte.com/

Codewars

Codewars oferuje obszerną kolekcję wyzwań związanych z kodowaniem. Możesz zgłaszać swoje wyzwania, które będą edytowane przez społeczność. Pozwala rozwiązać te wyzwania online za pomocą ich edytora ponad 20 języków programowania.

Odwiedź tutaj: https://www.codewars.com/

CodeChef

CodeChef oferuje setki konkurencyjnych wyzwań programistycznych. Umożliwia pisanie kodu w ich edytorze online i przeglądanie kolekcji wyzwań. Problemy z kodowaniem są podzielone na różne kategorie w zależności od poziomu umiejętności.

Odwiedź tutaj: https://www.codechef.com/

Codeforces

Codeforces to rosyjska baza konkurencyjna witryna programistyczna. Regularnie organizuje konkurs kodowania, w którym rywalizują programiści z całego świata.

Odwiedź tutaj: https://codeforces.com/

Hackerearth:

HackerEarth oferuje rozwiązania w zakresie oprogramowania dla przedsiębiorstw. Pomaga firmom lub osobom indywidualnym w zarządzaniu innowacjami i potrzebach związanych z rekrutacją techniczną. Do tej pory HackerEarth przeprowadził ponad 10 000 wyzwań programistycznych.

Odwiedź tutaj: https://www.hackerearth.com/

Mity i rzeczywistość programowania konkurencyjnego

Mity Rzeczywistość
Za późno na programowanie konkurencyjne Nie ma ustalonego wieku, w którym najlepiej zacząć wcześniej w swojej karierze programisty.
To doskonały sposób na zdobycie pracy jako programista Nie, to nieprawda, ponieważ jest to sport, który może przynieść korzyści. Jednak nie daje gwarancji zatrudnienia.
Przed rozpoczęciem programowania konkurencyjnego musisz rozwiązać wiele programów komputerowych. Możesz nauczyć się teorii, ale rozwiązywanie wyzwań komputerowych nie pomoże, ponieważ każda konkurencja jest wyjątkowa ze swoimi unikalnymi wyzwaniami.
Potrzebujesz eksperta od algorytmów Musisz być w stanie rozwiązać problemy
Wszyscy konkurencyjni programiści to doświadczeni programiści. Nie, to jest dla każdego, nawet dla początkujących kod może w nim uczestniczyć
To tylko hobby lub gra Natomiast programowanie konkurencyjne obejmuje niektóre z tych samych umiejętności nauczanych w programie nauczania informatyki, ale na znacznie głębszym poziomie. Więc nie możesz tego nazwać grą.

Najlepsze praktyki dotyczące konkurencyjnych egzaminów z kodowania

Chociaż nie ma ustalonej reguły, nadal niektóre najlepsze praktyki, których należy przestrzegać, to:

  • Spróbuj nauczyć się nowych, wydajnych algorytmów i wdrażaj je w razie potrzeby.
  • Rozwiń dobrą znajomość struktur danych, takich jak listy, drzewa i wykresy
  • Przeczytaj informacje o prywatności z konkurencyjnej witryny programistycznej i skontaktuj się z nimi przed rejestracją.
  • Powinieneś wybrać problem, dla którego możesz znaleźć rozwiązanie i ewentualnie wyjaśnienie tych rozwiązań.
  • Napisz przypadki testowe dla problemu i przetestuj swoją logikę, używając tych przypadków testowych przed przesłaniem.
  • Musisz utrzymywać gotowe szablony dla standardowych algorytmów, niezbędnych nagłówków, funkcji itp.
  • Używaj funkcji / metod i minimalizuj powtórzenia kodu.
  • Przetestuj swój kod pod kątem najgorszego przypadku i spróbuj znaleźć najlepsze rozwiązanie w tej sytuacji

Wady konkurencyjnego programowania

  • Błędy w czasie wykonywania związane z problemami ze złymi danymi wejściowymi są trudne do debugowania.
  • Jesteś przyzwyczajony do małych nagród i krótkoterminowych celów. W prawdziwym życiu, kiedy pracujesz nad jakimkolwiek projektem, zazwyczaj mija 2-3 miesiące, zanim otrzymasz nagrodę za projekt, nad którym pracujesz
  • Prawdopodobnie zostaniesz mistrzem kodowania, ale nie znasz żadnych frameworków (ważne przy prawdziwych projektach)
  • Udział w programie jest czasochłonny i bardziej żmudny i trzeba to robić wielokrotnie.

Podsumowanie

  • Programowanie konkurencyjne polega na rozwiązywaniu problemów związanych z kodowaniem za pomocą algorytmu i struktury danych.
  • Konkursy na kodowanie pomagają poprawić umiejętności logiczne i analityczne.
  • ICPC powstał w latach 70. XX wieku i rozrósł się do 88 krajów.
  • Na konkurencyjnych egzaminach z programowania wymagane są umiejętności algorytmiczne, podstawowe umiejętności matematyczne, umiejętności programowania, umiejętność szybkiego pisania na klawiaturze.
  • Bardzo ważne jest, aby wybrać język programowania, który najbardziej Ci odpowiada
  • Najważniejsze strony z najlepszymi wyzwaniami w zakresie kodowania to: 1) TopCoder 2) Coderbyte 3) Codewars 4) CodeChef 5) Codeforce 6) Hackerearth.
  • Powszechnym mitem jest to, że na rozpoczęcie programowania konkurencyjnego jest już za późno. Jednak rzeczywistość jest taka, że ​​nie ma na to ustalonego wieku.
  • Rozwinięcie dobrej znajomości struktur danych, takich jak listy, drzewa i wykresy, jest dobrą praktyką podczas konkurencyjnych egzaminów z kodowania.