CodinGame – czyli rywalizuj z innymi programując
Rozwiązywanie ciekawych problemów jest dla programistów dobrą zabawą jak i również świetną nauką. W czasach kiedy zaczynałem swoją przygodę z tą branżą, popularnym portalem zawierającym zadania do rozwiązania w różnych językach programowania był SPOJ. Jednak według mnie nie wciągał on na dłużej, a samo rozwiązywanie coraz większej liczby zadań było mało ciekawe. Brakowało tutaj elementu bezpośredniej rywalizacji z innymi, co czyni „grę” oraz zajmowanie coraz wyższych pozycji w rankingu niesamowitym wyzwaniem. Chęć bycia lepszym od innych i wygrywaniem jest tym co przyciąga nas do gry na dłużej. Jakiś czas temu trafiłem na portal CodinGame i na prawdę żałuję, że gdy zaczynałem i miałem mnóstwo czasu na rozwijanie się, nie było takiego serwisu.
Czym jest CodinGame?
CodinGame jest platformą dla programistów o różnym poziomie zaawansowania (każdy znajdzie coś dla siebie) umożliwiającą rozgrywkę, która polega na rozwiązywaniu różnych zadań. Do wyboru jest kilka trybów:
- „Practice” – łamigłówki do samodzielnego rozwiązania
- „Clash of Code” – szybka rozgrywka polegająca na rozwiązaniu prostego problemu
- „Contest” – dłuższa rozgrywka trwająca kilka dni, polegająca na zaprogramowaniu bota, który rywalizuje z botami stworzonymi przez innych graczy
Rozwiązania nadsyłać można w różnych językach. Wybór jest naprawdę ogromny. Za wykonywane zadania dostajemy punkty doświadczenia co pozwala wbijać kolejne poziomy. Do odblokowania są rozmaite osiągnięcia np.:
Practice
Ten tryb rozgrywki jest w zasadzie identyczny jak na SPOJ i służy raczej jako trening do gry przeciwko innym graczom. Mamy tutaj do wykonania zadania o różnym poziomie trudności. W zależności od złożoności problemu danego zadania dostajemy odpowiednią ilość punktów doświadczenia.
Clash of Code
W tym trybie rozgrywki mamy do rozwiązania prosty problem w określonym czasie. Każdy z graczy może utworzyć taką rozgrywkę, do której następnie dołączają gracze. Maksymalnie dołączyć może ich ośmiu, jednak aby grę rozpocząć potrzebnych jest minimalnie dwóch graczy. Czas na rozwiązanie zadania zawiera się w przedziale od 5 do 15 minut. Zadania są podzielone na trzy typy:
- Fastest – najszybsze przesłanie gotowego rozwiązania
- Shortest – najkrótszy kod
- Reverse – dostajemy wejście oraz wyjście i na ich podstawie musimy się domyślić jaki kod napisać
Warto tutaj dodać, że przy typie zadań na najkrótszy napisany kod niektóre języki programowania mają przewagę nad pozostałymi. Przykładowo kod napisany w pythonie lub rubym będzie dużo bardziej zwięzły niż java czy c++. Należy więc wybierać odpowiednie narzędzia do danego problemu, a nie ograniczać się tylko do jednego języka.
Contest
Rozgrywka w tym trybie organizowana jest co jakiś czas i trwa kilka dni (najbliższa zaplanowana jest na 10 dni). Tutaj do wygrania są już nagrody, jak i również możliwość aplikowania po konkursie na stanowiska dodane przez firmy.
Rozgrywka polega na napisaniu bota, który będzie rywalizował z botami stworzonymi przez innych graczy.
Jak przebiega rozwiązywanie zadań?
Poniżej przedstawiony został ekran rozwiązywania zadania w trybie Practice. Po lewej stronie jest opis problemu, w środku znajduje się edytor, gdzie możemy wybrać dany język programowania oraz automatycznie wstawiany jest szkielet programu, czyli obsługa wejścia/wyjścia, co ułatwia start. Pod edytorem znajdują się testy, które możemy odpalać w dowolnej kolejności, jak i zbiorowo wszystkie naraz. Gdy nasze rozwiązanie jest gotowe, przesyłamy je.
Podsumowanie
Według mnie CodinGame jest świetną platformą do nauki jak i rozrywki. Rozwiązywanie problemów i rywalizacja z innymi wciąga bardzo. Zachęcam więc do spróbowania swoich sił!
Subscribe and master unit testing with my FREE eBook (+60 pages)! 🚀
In these times, the benefits of writing unit tests are huge. I think that most of the recently started projects contain unit tests. In enterprise applications with a lot of business logic, unit tests are the most important tests, because they are fast and can us instantly assure that our implementation is correct. However, I often see a problem with good tests in projects, though these tests’ benefits are only huge when you have good unit tests. So in this ebook, I share many tips on what to do to write good unit tests.
co do pierwszego akapitu: czyżby autor wpisu padł ofiarą wszechobecnej grywalizacji (xbox-y etc.)?
z podobnych stron – polecam WeChall (agregator hackmes) https://www.wechall.net/all_sites, Topcoder, Potyczki Algorytmiczne
i ostatnie: SPOJ się nie skończył!
Raczej nie padłem, nie posiadam nawet żadnej konsoli 😀 Oczywiście, że SPOJ się nie skończył, jednak tak jak pisałem, mnie osobiście SPOJ czy inne strony tego typu jak podałeś nie wciągnęły na dłużej. Natomiast CodinGame, który tutaj podałem oferuje podobny, aczkolwiek inny typ rozrywki, co w moim przypadku lepiej się sprawdziło i sądzę, że gdyby czas mi pozwolił to spędzałbym przy tym dużo czasu.
Na stronie, którą podałeś nie znalazłem rozwal.to, a jeśli ktoś się interesuje security to też warte rozważenia.