Reglement

PHL congress

Datum en locatie

De wedstrijd gaat door op op de Vrije Universiteit Brussel, Campus Etterbeek, Pleinlaan 2, 1050 Brussel. Registratie kan vanaf , de eigenlijke wedstrijd begint (stipt) om en eindigt om 17u30.

Inschrijving

Inschrijven gebeurt liefst zo vroeg mogelijk (vanaf ). De inschrijvingen sluiten op . In 2013 kunnen we plaatsen garanderen voor 500 deelnemers. Inschrijven kan per team van 3 personen. Bij de inschrijving moet vermeld worden (*) naam, geslacht, t-shirtmaat van de drie teamleden, instelling waar elk lid studeert, e-mail van alle deelnemers, en optioneel een begeleider (met vermelding van e-mail) van het team.

Enkel deelnemers die studeren of werken in Vlaanderen zijn toegelaten. Een team kan deelnemen in een van de volgende categorieën:

  • Categorie 1: leerlingen uit het secundair onderwijs,
  • Categorie 2: professionele bachelorstudenten (opleiding aan een hogeschool),
  • Categorie 3: academische bachelorstudenten (opleiding aan een hogeschool of universiteit),
  • Categorie 4: masterstudenten (hogeschool of universiteit), doctorandi, afgestudeerden en professionals

De drie teamleden mogen studeren in verschillende instellingen en mogen van verschillend niveau zijn (secundair/bachelor/master/afgestudeerd). Als een team uit deelnemers van verschillende niveaus bestaat, dan telt het hoogste niveau binnen het team voor de bepaling van de categorie waarin het team deelneemt. Bijvoorbeeld:

  • Als elk lid van een team in het secundair onderwijs zit, dan behoort dat team tot categorie 1.
  • Als een team bestaat uit 2 deelnemers uit het secundair en 1 professionele bachelorstudent, dan behoort het team tot categorie 2.
  • Als een team bestaat uit professionele en academische bachelors, dan behoort het team tot categorie 3.
  • Teams waarin minstens één student zit uit een masteropleiding (ongeacht of deze opleiding georganiseerd wordt aan een hogeschool of universiteit), behoren tot categorie 4.
  • enz...

Studenten die ingeschreven zijn in een schakelprogramma om een Masteropleiding te volgen sluiten zich aan bij categorie 3.

De definitieve toewijzing van teams aan categorieën gebeurt door de organisatie.

Een team hoeft geen begeleider te hebben, maar het kan. De rol van de begeleider is niet het helpen bij het programmeren (in het bijzonder wordt de begeleider tijdens de wedstrijd beschouwd als niet deel uitmakend van het team), en wordt niet verder door de wedstrijdorganisatie bepaald. Het registreren van begeleider legitimeert de aanwezigheid van de begeleider op de locatie van de wedstrijd. Tijdens de wedstrijd mogen de begeleiders geen contact zoeken met de deelnemers.

Oefenwedstrijd

Na het inschrijven krijgen de deelnemers toegang tot een oefenwedstrijd. De inschrijving van een team is pas geldig nadat het team minstens 1 opgave in deze wedstrijd heeft opgelost. Er wordt een zeer eenvoudige opgave voorzien ("MinMax") die iedereen zou moeten kunnen oplossen (beschouw dit als een test voor de minimum programmeer-ervaring nodig om deel te nemen aan de VPW).

Deze maatregel is nieuw sinds 2013 en ingevoerd omdat op vorige wedstrijden bleek dat veel deelnemers moeite hadden met het lezen van invoer en het schrijven van uitvoer. Door een eenvoudige opgave op te lossen, bewijzen de deelnemers dat zij de wedstrijdinterface begrijpen. Een goede voorbereiding vermijdt frustraties achteraf.

Als een team 2 weken voor de aanvang van de wedstrijd nog geen vraag correct heeft ingediend dan kan de organisatie beslissen om de inschrijving van het team te annuleren en door te geven aan een team op de wachtlijst.

Op de oefenwedstrijd zijn ook vragen van vorige jaren beschikbaar, waardoor deelnemers zich via dit platform kunnen voorbereiden en zich vertrouwd maken met de wedstrijd-interface.

Opgaven

De opgaven worden opgesteld door een onafhankelijke jury bestaande uit leden van de organiserende universiteiten en hogescholen. Elk team krijgt 5 opgaves voorgeschoteld, die tijdens de wedstrijd moeten opgelost worden. De vier categorieën krijgen verschillende opgaves, en de moeilijkheidsgraad is afhankelijk van de verwachte programmeerervaring van de deelnemers.

Kwotering en Rangschikking

Voor elke opgave worden een aantal testgevallen opgegeven in de wedstrijdinvoer. Voor elk testgeval moet de oplossing op één regel afgedrukt worden. Het precieze formaat wordt telkens beschreven in de opgave.

Elke uitvoerregel die volledig correct is (en dus elk testgeval dat volledig werd opgelost) levert punten op. Het aantal punten dat een team wint voor een opgave komt overeen met het aantal correcte uitvoerregels, uitgedrukt als een percentage van het totaal aantal testgevallen: voor elke opgave is de som van de punten dus 100. Daarenboven wordt een bonus van 50 punten toegekend aan elk team dat álle gevallen van een bepaalde opgave correct oplost: deze teams behalen dus 150 punten voor die opgave. Op die manier kan een team toch punten behalen (maximaal 99 punten) wanneer hun programma niet helemaal correct werkt en slechts een deel van de invoer-gevallen oplost.

Het programma dat de oplossingen beoordeelt, gebruikt het standaard UNIX "diff" commando om een oplossing te vergelijken met de modeloplossing. De jury kan alle maatregelen nemen om te vermijden dat teams punten verdienen door misbruik te maken van deze werkwijze. Voorbeelden van zo'n misbruik zijn een programma dat de oplossingen voor de voorbeeldinvoer rechtstreeks afdrukt zonder die oplossing te berekenen of dat gokt bij ja/nee antwoorden. De jury heeft o.m. het recht om ingediende oplossingen te weigeren of teams te diskwalificeren als deze regel overtreden wordt. De jury hoeft een team niet tijdens de wedstrijd in te lichten over het overtreden van deze regel. Ook na de bekendmaking van de uitslag kan deze regel nog ingeroepen worden om een uitslag te wijzigen.

De rangschikking is in de eerste plaats gebaseerd op het totaal aantal punten. Bij ex aequo wordt de totale submissietijd van een team gebruikt: hoe korter die is, hoe beter de rangschikking. De totale submissietijd is de som van de submissietijden van de beste oplossingen voor elke vraag. De submissietijd van een oplossing is de tijdsduur tussen het tijdstip van de submissie van die oplossing en het begin van de wedstrijd. 

Er wordt een afzonderlijke rangschikking opgesteld per categorie.

Raadgeving

Omdat de uitvoering van je programma na verloop van een tijdslimiet wordt gestopt, heb je er alle belang bij om de oplossing van een invoergeval zo snel mogelijk af te drukken (in plaats van eerst alle resultaten op te slaan in een array of andere gegevensstructuur en dan pas op het einde deze resultaten af te drukken).

Wanneer je als uitvoer WRONG_ANSWER krijgt, kan dit te wijten zijn aan de tijdslimiet. Dit betekent niet dat al je oplossingen fout zijn, maar wel dat niet alle oplossingen binnen de gegeven tijdslimiet werden berekend. Het is dus mogelijk dat je programma in dat geval een aantal (maar niet alle) juiste oplossingen heeft berekend, zodat het toch de moeite loont om het te "submitten" (= het programma met de wedstrijdinvoer te laten lopen).

Verloop van de wedstrijd

Er wordt verwacht dat elk team een laptop of PC met draadloze netwerktoegang (Wifi) meeneemt waarmee men zal deelnemen aan de wedstrijd. Teams zijn zelf verantwoordelijk voor het installeren van de nodige programmeertalen (compilers, eventuele ontwikkel-omgevingen, tekst-editors, etc.).

Elk team beschikt over maximaal één laptop of één pc, en over slechts één toetsenbord en één scherm. Het gebruik van extra tablets e.d.m. is niet toegelaten. Er is geen beperking op wat op de meegebrachte laptop mag staan. Deelnemers mogen documentatie (zoals boeken) meebrengen. Er wordt aangeraden om documentatie omtrent APIs offline te bewaren, vermits toegang zoeken tot het internet tijdens de wedstrijd zelf verboden is. De deelnemers houden zich aan de regels van fair play, waaronder

  • geen toegang tot het internet zoeken
  • niet interfereren met de andere teams tijdens de wedstrijd
  • geen hulp van buitenaf proberen te verkrijgen
  • ...

Vragen of opmerkingen aan het adres van de jury over de opgaves of andere aspecten van de wedstrijd gebeuren via het communicatiesysteem dat deel uitmaakt van de wedstrijdinterface ("clarifications"). In uitzonderlijke gevallen (b.v. technische problemen) kan rechtstreeks een vraag gesteld worden aan de leden van de organisatie die aanwezig zijn. Elk team ontvangt de opgaven op papier om . Tot kunnen oplossingen ingezonden worden: de inzendprocedure wordt uitgelegd tussen en .

Zo snel mogelijk na elke inzending wordt aan het team de score meegedeeld: die komt overeen met het percentage correcte uitvoerregels (plus een eventuele bonus indien ALLE uitvoerregels correct zijn) + een standaard boodschap (tijdslimiet overschreden, geheugenlimiet overschreden, runtime fout, compileert niet, linkt niet, ...). Uitleg over die boodschap kan bekomen worden bij de jury. Een uitvoerregel wordt als correct beschouwd indien die op de geheime wedstrijdinvoer (vooraf door de jury vastgelegd) de juiste uitvoer produceert.  Dit wordt gecontroleerd met het standaard UNIX "diff" commando. Elke inzending moet worden uitgevoerd binnen de gestelde tijdslimieten en geheugenlimieten. Deze limieten zijn ad hoc per taal + hardware bepaald en worden niet meegedeeld.

Alle teams moeten programmeren in een aangewezen ruimte en plaats. Tijdens de wedstrijd mogen de deelnemers zich vrij bewegen buiten de programmeerruimten, met inachtneming van de regels van fair play.

De inzendingen

De teams gebruiken enkel de ondersteunde programmeertalen: een team hoeft niet voor elk probleem dezelfde programmeertaal te gebruiken. De inzendingen blijven eigendom van de teams, en de organisatie zal geen ingezonden oplossingen (ook geen foutieve) verspreiden.

Drank en voedsel

Er wordt drank voorzien vanaf voor deelnemers en begeleiders. Vanaf zijn er bovendien ook gratis broodjes voor alle deelnemers en begeleiders, mogelijk beperkt door bonnetjes.

Deelnemers mogen zelf ook drank en voedsel meebrengen, maar alcohol is niet toegelaten en zal ook niet door de organisatie voorzien worden.

Aanvaarding van de reglementen

Door hun deelname leggen de deelnemers zich neer bij de beslissingen van de jury en de organisatoren.