FAQ CODING MASTERS

Jakie będą języki programowania?

Wybraliśmy języki Python i C++.

Czy zadanie można wykonać w jednym wybranym języku, czy trzeba znać oba?

Zakładamy, że wystarczy znajomość jednego wybranego przez uczestnika języka. Każdy z uczestników będzie pisał program eliminacyjny i finałowy w tym samym języku.

Czy język wybrany na kwalifikacje jest wiążący na finał?

Tak.

O jaką wersje C++ dokładnie chodzi? Jaki kompilator będzie w środowisku do zgłoszeń?

Wersja kodu w C++ musi być zgodna ze standardem C++ 14. Do oceny planujemy korzystać z kompilatora Clang. Jest on dostępny jako darmowe oprogramowanie.

Jaka wersja kompilatora cpp zostanie użyta?

Visual studio, the community edition 2019 z kompilatorem clang/llvm.

Jaka wersja Pythona będzie wykorzystywana w CODING MASTERS?

Pracujemy na Python 3.8.0

Na czym będą polegać mistrzostwa?

W pierwszym etapie zadania będą oparte o zagadnienia algorytmiczne.

Jaka będzie forma zadań?

Forma zadań to polecenie/opis funkcjonalności programu. Odpowiedzią jest kod programu, który realizuje zadanie zgodnie z poleceniem.

Czy zawody będą odbywać się w „pseudokodzie”, czy będzie chodziło o ogólny zamysł rozwiązania problemu?

W zadaniach będzie chodziło o przedstawienie działającego rozwiązania danego problemu.

Kiedy i gdzie zostaną przedstawione zadania w fazie kwalifikacji?

11.12.2019, o godzinie 18:30 zostaną opublikowane zadania kwalifikacyjne dla studentów i absolwentów na discordzie CODING MASTERS.

Linkę z zaproszeniem na kanał, dostał każdy zawodnik, który poprawnie wypełnił arkusz zgłoszeniowy.

Ile będzie zadań do rozwiązania na etapie kwalifikacji?

Będzie jedno zadanie dla studentów oraz jedno zadanie dla absolwentów.

Jaki będzie stopień skomplikowania zadania?

Zadania są planowane na około godzinę kodowania, ale kryterium czasu realizacji przy ocenianiu jest brane pod uwagę jako ostatnie. Jeżeli zrobisz świetny, szybki program, to nawet wysyłając w niedzielę wieczorem nadal masz szansę się zakwalifikować.

Jakie są kryteria oceny zadań kwalifikacyjnych?

Kryteria oceny zadań:

  1. Podstawowym kryterium oceny będzie poprawność działania stworzonego programu.
  2. Czas wykonywania się programu podczas rozwiązywania zadania.
  3. Czystość kodu, łatwość zrozumienia, czytelność i jednoznaczność komentarzy w kodzie.
  4. Czas realizacji zadania. Decyduje kolejność zgłoszeń.

Jak dokładniej będzie wyglądać ocenianie kryteriów poza pierwszym? Jest jakaś skala punktowa/wytyczne? To, że "kryterium czasu realizacji przy ocenianiu jest dopiero ostatnie" znaczy, że dalsze kryteria liczą się jedynie w razie remisu wcześniejszych czy np. mają mniejszą wagę?

Do kryterium 2 przechodzą wszystkie programy, które przeszły kryterium 1. Do kryterium 3 przechodzą wszystkie programy, które przeszły najlepiej kryterium 2, itd.

Jak będą dobierani finaliści piszący w różnych językach?

Ilość miejsc w finale jest stała: 8. Ilość miejsc dla finalistów piszących w danym języku jest proporcjonalna do łącznej liczby uczestników wybierających dany język.
Osoby piszące w danym języku są oceniane/porównywane z osobami piszącymi w tym samym języku i mają statystycznie takie same szanse na udział w finale.

W jaki sposób zostanie wybrany zwycięzca finału pomiędzy c++ a Pythonem?

Kryterium czasu wykonywania programu będzie zmodyfikowane tak by uwzględnić specyfikę języków i środowisk. Czas będzie porównywany z czasem wykonywania się optymalnego programu w danym języku i liczony będzie względny koszt czasowy programu.

Przykładowo: optymalny program w C++ wykonywałby się 2 sekundy, a w Pythonie 5.
Wtedy uczestnik piszący w Pythonie kod wykonujący się 5.1 sekundy miałby względną różnicę 2%, a uczestnik piszący w C++ kod wykonujący się 2,5 sekundy miałby względną różnicę 25%. To oczywiście skutkowałoby lepszym wynikiem dla uczestnika piszącego w Pythonie.

Czy wysyłane programy będą weryfikowane automatycznie?

Pierwsze i drugie kryterium (poprawność pracy programu i czas obliczeń), będzie sprawdzane automatyczne. Reszta manualnie.

Jakie flagi kompilacji będą używane? (W szczególności jakie "O" w przypadku C++)

O2.

Czy podczas wykonywania zadań można używać bibliotek niestandardowych?

Podczas rozwiązywania zadań należy wykorzystywać jedynie funkcje dostępne w bibliotece standardowej wybranego języka.

W jaki sposób będziemy przesyłać rozwiązania?

Drogą mailową, według podanych wytycznych. Pełna informacja będzie podana wraz z prezentacją zadań 11.12.2019 o 18:30.

W jakiej formie wysyłamy zadanie?

Plik .cpp albo .py.

Zadanie dla studentów: Co oznaczają czarne pola i czy można wychodzić poza mapę?

W trakcie wykonywania ruchu postać może przechodzić ponad czarnym polem oraz poza granicami mapy. Krok postaci nie może się zakończyć poza mapą ani na czarnym polu.

Zadanie dla studentów: Czy w kodzie można zamieścić tablicę wszystkich możliwych wyników?

Nie.

Czy w mistrzostwach może brać udział więcej niż jeden reprezentant danej uczelni?

Tak. W odróżnieniu od kategorii gamingowych, do TOP8 może wejść więcej niż 1 reprezentant danej uczelni.

Czy mogę wziąć udział w CODING MASTERS jeśli już gram w S#5 TMLA?

Tak. Uczestnictwo w kategorii gamingowej nie wyklucza udziału w CM.

Czy całość mistrzostw będzie rozgrywana online?

Nie. Faza kwalifikacji będzie rozegrana online, następnie 8 najlepszych studentów i 8 najlepszych absolwentów zostanie zaproszonych 18.01.2020 na finał LAN do Wrocławia – Politechnika Wrocławska.