Instructions

Ultimate Coding Challenge 2008, Belgrade, 3.6.2008

Pristupanje Takmičarskoj Areni

Kada odete na internet stranicu Takmičarske arene, bić vam prikazan formular za prijavljivanje.

Login page

Odatle, morate uneti vaše korisničko ime i lozinku koja vam je dodeljena od strane moderatora takmičenja. Kada se prijavite inicijalno će vam biti prikazana strana Faze Kodiranja:

Coding Phase page

Faza Kodiranja

Faza Kodiranja je period tokom koga svaki takmičar pokušava da napiše rešenja za tri postavljena problema. Vreme za koje problem mora biti rešen zavisi od trenutne runde takmičenja.

Kada takničenje počne, probleme možete preuzeti na sledeći način:
  1. Kliknite na padajići meni označen sa "Izaberi jedan"
  2. Izaberite vrednost problema koji želite da rešavate
  3. Pritisnite dugme Počni kodiranje
 Što je veći broj poena dodeljene, problem će biti teži. Probleme možete rešavati bilo kojim redosledom. Možete više problema držati otvorenim u isto vreme - ali imajte na umu da vreme za svaki problem teče nezavisno od otvaranja drugih problema. Poene koje ćete dobiti kada prosledite rešenje problema se izračunavaju na osnovu proteklog vremena kodiranja. Što brže prosledite rešenje više poena ćete dobiti.

Faza Kodiranja će vam dozvoliti da prosledite rešenje problema više puta. Ako ste već jedanput prosledili rešenje problema i odlučite se da ponovo prosledite rešenje, vaš broj poena će biti promenjen tako da će biti uračunato dodatno vreme kodiranja i poeni će vam biti umanjeni za 10% maksimalne vrednosti problema.

Tokom Faze Kodiranja, tajmer faze kodiranja će odbrojavati preostalo vreme za Fazu Kodiranja.

Editor koda

Editor koda je najvažniji deo takmičarske arene. Problemi se prikazuju u Editoru Koda i u njemu se rešenja kodiraju, kompajliraju , testiraju i prosleđuju.

Problem
Problem je prikazan ,u celosti, u gornjem delu prozora za kodiranje. U problemu je tačno objašnjeno šta je potrebno uraditi. U njemu je sadržano: objašnjenje zadatka, klase i definiceje metode kojih se vaše rešenje mora pridržavati, sva ograničenja za ulazne parametre i primeri koji pojašnjavaju problem.

Obaveštenje: Svi problemi će biti napisani na Engleskom jeziku.

Problem Statement

Odabir Jezika
Peximova Takmičarska Arena dozvoljava uptrebu sledećih programskih jezika tokom takmič: Java, C++, C#, VB i Pascal. Možete odabrati programski jezik za svaki problem ponaosob. Dozvoljeno je koristiti bilo koji ponuđeni jezik za rešavanje bilo kog problema tokom jednog takmičenja. Iz tog razloga, imate mogućnost da birate programski jezik iz editora koda. Opcije za odabir jezika nalaze se u gornjem desnom delu editora koda u delu označenom "Choose your language". Nemojte da zaboravite da odaberete odgovarajući jezik pre nego što pokušate da kompajlirate vaš kod. Neobične greške tokom kompajliranja mogu biti rezultat pogrešno odabranog jezika.

Choosing language

Pisanje rešenja
U vašem rešenju klasa i sve njene metode moraju biti javne(public) da bi Peximov server mogao da im pristupi i da bi mogao da pozove odgovarajuće metode. U nastavku možete naći obrazce za Java, C++ C#, VB ili Pascal:

Obrazac Java koda
import <necessary classes>

    public class <class-name> {
    public <return-type> <method-name>(<argument-type> arg1) {
    //your source here
    return <result>;
    }
    }
Obrazac C++ koda
#include <necessary classes>

    using namespace std; //Required for Pexim bcc32 compiler

    class <class-name>
    {
    public:
    <return-type> <method-name> (<argument-type> arg1)
    {
    //your source here
    return <result>;
    };
    };
Obrazac C# koda
using ;

    public class  {
    public  ( arg1) {
    //your source here
    return ;
    }
    }

Kompajliranje
Kompajliranje koda iz Editora Koda će biti obavljeno na Peximovom serveru. Na osnovu odabranog programskog jezika u Editoru Koda u momentu kompajliranja biće određeno kom kompajleru ćbiti poslat zahtev na obradu. Zahtev za kompajliranjem će poslati na kompilaciju Pexim kompajleru kod koji se trenutno nalazi u Editoru Koda. Bićete obavešteni ukoliko je kompajliranje obavljeno uspešno. U suprotnom greške koje vraća kompajler biće vam prikazane u prozoru za rezultate kompajliranja. Naredni pasus prikazuje neuspešan pokušaj kompajliranja kod u Java jeziku: 

Compile and Test

Korisničko testiranje
Kada je vaš kod uspešno kompajliran, možete odlučiti da izvršite jedan ili više korisnički test nad kompajliranim kodom. Korisnički test će pokazati koju vrednost vraća vaškod za ulazne podatke koje mu prosledite. Korisnički test vam neće dati informaciju o tome da li je vrednost koju vraća vaš kod ispravna ili ne. Moraćete sami da odlučite da li je vraćena vrednost ispravna ili ne. Izvršavanje korisničkog testa na osnovu primera datih u okviru problema je prilično dobro merilo ispravnosti vašeg rešenja, sa obzirom da će u primerim biti naznačeno koja je očekivana vrednost za ulazne parametre date u njemu. Primeri ne predstavljaju kompletno testiranje za dati problem, to što vam kod vraća tačne vrednosti za sve primere ne mora da znači da će i u bilo kom drugom slučaju vraćati tačnu vrednost. Imajte na umu potencialne granične slučajeve koji mogu da izazovu varijacije u ponašanju vašeg rešenja i testirajte ove slučajeve detaljno.

Ako se vaš kompajlirani kod izvršava uspešno (bez grešaka), za ulazne parametre koje ste mu dostavili biće vam vraćene vrednosti koje je vaš kod izračunao. U slučaju da je došlo do greške prilikom izvršavanja vašeg koda, biće vam prikazane poruke o greškama.

Važno obaveštenje: Kod koji prosledite mora da se izvršava za manje od sekunde za bilo koji testni slučaj, u suprotnom vaše rešenje će se smatreti netačnim i neće vam biti dodeljeni poeni.

Odabir argumenata problema
Kada kliknete na "Test" dugme iz editora koda,"Problem Arguments Window" će biti prikazan.

Prosti tipovi podataka
Za sve tipove podataka koji nisu nizovi - kao na primer int, long, char i String - biće vam prikazano polje u koje možete da unesete podatak. podatak treba unetei u onom obliku u kome zaista jeste, bez navodnika ili nekih dodatnih karaktera. Na primer, ako hoćete da testirate sa String-om "abc" treba da unesete u polje samo abc an ne "abc".

Složeni tipovi podataka
Ako je neki od ulaza niz kao na primer int[] (vector<INT>in C++)), trebalo bi da unesete sve elemente podatka ođednom kao listu odvojenu zarezima. Na primer, da unesete niz int[]{1,3,6}, treba samo da unesete {1,3,6,4}. Da unesete niz String[]{"a","b","c"}, treba samo da unesete {"a","b","c"}. Ako želite da koristite karaktere " ili \ unutar niz String[] morate da ih započnete sa \. Na primer, \" predstavlja dupli navodnik, a \\ predstavlja jednu kosu crtu. Unos {"\"\\\""} predstavlja niz String[] sa jednim elementom: "\".

Prosleđivanje
Ako se vaš kod kompajlira u bilo kom trenutku imate mogućnost da ga prosledite. Bitno je da razumete da se prosleđivanje vašeg rešenja može obaviti bez obzira na to da li je ono tačno ili ne. Što brže prosledite rešenje problema više poena će vam biti dodeljeno. Poeni će biti dodeljeni bez obzira na to da li je rešenje tačno ili ne. Za rešenje koje se ispostavi da je netačno, nakon sistemskog testiranja, dodeljeni poeni će biti oduzeti. Prosleđeni kod će prvo biti kompajliran, i ako je kompajliranje bilo uspešno, kod će biti sačuvan u bazi na serveru.

Imate pravo da prosledite rešenje više puta. Ako ste već jedanput prosledili rešenje problema i odlučite se da ponovo prosledite rešenje, vaš broj poena će biti promenjen tako da će biti uračunato dodatno vreme kodiranja i poeni će vam biti umanjeni za 10% maksimalne vrednosti problema. You do have the option of submitting a problem multiple times.

Čuvanje

U bilo kom trenutku dok kodirate, možete da sačuvate vaš kod. Klik na dugme "Save" će smestiti trenutnu verziju vašeg koda na Peximov server. Čuvanje koda sa vremena na vreme se preporučuje jer će to osigurati da se naj novija verzija vašeg koda biti dostupna u slučaju da se nešto desi sa vašom sesijom(npr. izgubite konekciju sa serverom).Kod se čuva prilikom kompajliranja.

Štoperica

Štoperica u editoru koda će odbrojavati vreme preostalo do kreaja trenutne faze takmičenja. Ne zaboravite da postoji razlika između lokalnog i serverskog vremena. Iz ovog razloga, UVEK je potrebno proslediti rešenja barem 60 sekundi pre isteka vremena za tu fazu takmičenja.

Timers

Faza izazova

Faza izazova će početi pet minuta nakon kraja faze kodiranja(ovo vreme je predviđeno za kratku pauzu) i trajaće 15 minuta.

Za vreme faze izazova , imaćete priliku da vidite kod prosleđen od strane drugih takmičara. Ako verujete da je bilo koje od prosleđenih rešenja pogrešno, možete ga izazvati sa određenim testnim primerom za koji verujete da će biti vraćena pogrešna vrednost. Ako je vaš izazov bio uspešan, tj. ako je priloženo rešenje vratilo pogrešan rezultat, biće vam dodeljeno 50 poena, a takmičaru koji je priložio to rešenje biće oduzeti svi poeni. Međutim, ako je vaš izazov neuspešan, tj. ako je priloženo rešenje vratilo tačan rezultat, izgubićete 25 poena.

Da bi ste izazvali rešenje nekog takmičara idite na "challenge phase" stranu:

Challenge Example

Kliknite na bilo koji prikazani broj poena da bi ste videli prosleđeni kod. Dok budete gledali kod, primetićete "Challenge" dugme pri dnu editora. Challenge dugme će izazvati kod sa testnim primerom koji ste vi uneli.

Da bi ste bili u mogućnosti da izazovete nekoga morate imati minimum 0 poena u tom trenutku. Priloženi kod se može uspešno izazvati samo jedanput. Ako je neki od tekmičara uspešno izazvao neki priloženi kod, taj kod ne može biti ponovo izazvan.

Faza sistemskog testiranja

Nakon Faze Izazova, nad svim priloženim rešenjima biće izvršeni sistemski testovi. U slučaju kvalifikacione runde, sistemski testovi će biti pušteni nakon isteka vremena za kvalifikacioni period. ovi testovi će porediti očekivane i dobijene rezultate da bi se proverilo da li priloženo rešenje radi u svakom testnom slučaju.

Svako priloženo rešenje koje ne prođe bilo koji od sistemskih testova biće proglašeno netačnim i svi dodeljeni poeni za to rešenje će biti oduzeti. Svako rešenje koje koje se bude izvršavalo duže od jedne sekunde za bilo koji od testnih slučajeva biće proglašeno netačnim i svi dodeljeni poeni za to rešenje će biti oduzeti..

Ako vaše priloženo rešenje prože sve sistemske testove, zadržaćete poene koji su vam bili dodeljeni kada ste priložili rešenje problema. Vaš krajnji rezultat za svaku rundu će biti zbir preostalih poena nakon Faze Sistemskog Testiranja i poena osvojenih ili izgubljenih tokom Faze izazova.
Mail contact   :   Pexim Solutions