Programming Contest Nieuwe Stijl: Contest II
Inhoudsopgave
- 1: Inhoudsopgave
- 2: Inleiding
- 3: De opdracht
- 4: Details
- 5: De scoretelling
- 6: De regels en andere afspraken
- 7: Wat kan ik eigenlijk winnen?
- 8: Om je op weg te helpen
- 9: Tot slot...
Inleiding
Na het daverende succes van de vorige PRG Contest is hier dan eindelijk deel II. Ook in dit deel zullen wij, als crew, weer trachten een leuke contest op te zetten die:
- uitdagend is, maar niet te hoogdrempelig; iedereen moet in principe mee kunnen doen
- niet te langdradig; het blijft een leuk 'spelletje' om aan mee te doen en de uitslagen zijn niet pas in 2009 bekend
- niet platform of programmeertaal gebonden; van PHP tot ASM, van C# tot Java: iedereen is welkom
- niet te serieus; er worden geen gouden bekers of schalen uitgereikt. Wat je wél kunt winnen is eeuwig restecp van mede GoT-ters.
Ook deze contest proberen wij als crew weer te begeleiden en te sturen; we zullen ons niet te veel met de contest an sich bemoeien maar zijn wel aanspreekpunt voor vragen omtrent de opdracht, regels en uitslagen. Uiteraard zijn we zelf voor de uitslagen van deelneming uitgesloten (we winnen anders toch alleen maar ), maar het is goed mogelijk dat iemand (of meerdere iemanden
) ook een potje met jullie meespelen om te zien hoe wij ranken t.o.v. jullie
De opdracht
We hebben ons best gedaan ook deze keer weer een leuke contest te verzinnen; wat hierna volgt is de opdracht. Lees deze aandachtig door, alle informatie die je nodig heb om aan deze contest mee te doen staat er in. Schroom niet om te vragen als je nog onduidelijkheden denkt te hebben gevonden, maar verzeker je ervan dat de informatie niet in deze opdracht staat voordat je dat doet.
De bedoeling
De bedoeling is als volgt: we gaan puzzelen met woorden. Je krijgt van ons een bestand aangeleverd met woorden; nederlandsche woorden om precies te zijn. Elk van deze woorden is puur willekeurig gekozen. Deze woorden dienen in een zo klein mogelijk vlak te worden geplaatst, horizontaal (van links naar rechts of omgekeerd) of verticaal (van boven naar beneden of omgekeerd). Daarbij dienen letters van reeds geplaatste woorden ge/herbruikt worden zodat het totale 'grid' uiteindelijk als een soort kruiswoordpuzzel in elkaar gepast is. Het is verplicht om de woorden zowel horizontaal als verticaal te plaatsen, en de bedoeling om woorden zo veel mogelijk te laten kruisen/overlappen.
De kunst
De kunst is om deze woorden in een zo klein mogelijk 'grid' te plaatsen, het uiteindelijke aantal letters in het 'grid' wordt gebruikt voor de scoretelling.
Details
Er wordt een bestand, words.txt, aangeleverd met daarin de woorden die je in het grid dient te plaatsen. De woorden worden gescheiden door een CrLf ("enter" ofwel \r\n). Deze woorden zijn gegroepeerd middels één of meerdere lege regels, met een maximum van 99 groepen in het bestand. Met iedere groep woorden dient een grid te worden gevormd waarin alle woorden uit die groep zijn geplaatst (horizontaal dan wel verticaal, zoals beschreven in 'de bedoeling'). Iedere groep bevat minimaal 5 en maximaal 999 woorden. De output dient het grid te zijn, in een ASCII bestand, waarbij de horizontale regels worden gescheiden door CrLf. Iedere groep wordt in een eigen uitvoer bestand geplaatst, genaamd grid01.txt, grid02.txt enzovoorts. Whitespace in de in- en uitvoer bestanden wordt gerepresenteerd door een spatie. Woorden kunnen of mogen lower én uppercase karakters bevatten in zowel de in- als uitvoer bestanden. A en a zijn dus uitwisselbaar.
Eventueel 'nieuwe' woorden, die dus niet voorkomen in het aangeleverde words.txt, die worden gevormd bijvoorbeeld door het horizontaal onder elkaar plaatsen van woorden worden niet in ogenschouw genomen. Degene met de minste punten wint de contest op het vlak van de scores. Alle in- en uitvoer bestanden dienen te worden gelezen en geschreven in dezelfde directory als de executable (of het script). In- en uitvoer bestanden zijn ASCII, géén extended ASCII.
De scoretelling
De scoretelling is simpel; het aantal letters in de grid is je score. Degene met de laagste score wint
De regels en andere afspraken
Uiteraard zijn er aan deze contest wat regeltjes verbonden. Om alles eerlijk te laten verlopen hanteren we de volgende spelregels:
- Inzendingen voor de contest stuur je naar prgmods@tweakers.net; neem daarbij in de subjectregel de tekst "Inzending PRG Contest 2" op en vernoem in de email zelf je nickname. Zet de bestanden niet ergens publiek neer voordat de sluitingsdatum is bereikt, om het zo voor iedereen leuk te houden. Stuur bovendien geen code op waar je niet 100% achter staat. Je eerste inzending is de enige inzending die telt, een tweede inzending zullen we niet in ogenschouw nemen.
- De sluitingsdatum van de contest is 1 mei 2007. Elke inzending die binnenkomt ná 30 april 2007 om 23:59:59 is helaas uitgesloten van deelneming, zonder uitzondering.
We hebben bewust een datum gekozen die nog redelijk ver in de toekomst ligt, zodat niemand echt tijdsdruk zal ondervinden en zoveel mogelijk mensen mee kunnen doen. Daarnaast is het niet de bedoeling dat je werk er onder gaat lijden
- Neem in je mailtje een zip- of rar-file op met daarin een uitvoerbare versie van je programma én je programmacode.
In het geval van scripttalen zoals PHP is één bestand uiteraard voldoende.
- Je mag elke programmeertaal gebruiken die je wilt, met uitzondering van Brainfuck.
- Samenwerken mag, maar meld het wel even als je dit doet. Neem in je inzendingsmailtje de nicknames van alle programmeurs op.
- De ingestuurde zipfiles worden na de contest publiek gemaakt, inclusief je sourcecode. Als je hiertegen bezwaar hebt, dan kun je beter niet meedoen.
Uiteraard staat het je vrij om elke willekeurige opensource licentie aan je code te verbinden en de credits liggen uiteraard gewoon bij jou.
- Het geven van foute uitvoer betekent sowieso dat je game over bent en je dus geen punten krijgt.
- Alle genoemde tekstbestanden bevinden zich in dezelfde directory als het uitvoerbare bestand van je programma; dat betreft dus uitvoer én invoer.
- Als je programma langer dan één uur nodig heeft om te runnen op de pc die je score berekent, dan heb je pech. Na één uur wordt je applicatie gestopt en alleen de uitvoer die op dat moment in je gridxx.txt bestand zit wordt gebruikt voor het berekenen van je score. Je kan ervan uit gaan dat de pc waarop je programma gerund wordt sneller is dan de gemiddelde consumentenpc, maar probeer je programma zo snel mogelijk te houden.
- Het heeft geen zin om bij moderators te gaan vragen naar de uiteindelijke lijst met woorden. Deze file wordt namelijk pas ná de sluitingsdatum überhaupt gemaakt, dus we kúnnen je die files niet geven, zelfs al zouden we het willen.
Natuurlijk geven we uiteindelijk wel de precieze files vrij, samen met de uitslag van de contest, en niet eerder dan dat om zo een beetje de spanning erin te houden.
Daarnaast verwachten we ook zinnig én voldoende commentaar in je code; zoals je in productiecode zou verwachten. Dit omdat wij ook de code willen/gaan beoordelen.
Behalve de winnaar in de categorie "laagste score" en "snelste code" zullen er nog winnaars zijn in diverse andere categoriën, waaronder o.a. de categorie 'beste defensive code' (code die goed tegen een stootje kan zoals bijvoorbeeld een 'beschadigd' words.txt bestand of een words.txt bestand dat niet voldoet aan de specificaties). Hierbij is het mogelijk dat één persoon in meerdere categoriën de winnaar is.
Wat kan ik eigenlijk winnen?
Nou, dat is vrij simpel: niks. Het enige dat je mogelijk aan deze contest overhoudt is eeuwige roem en de eer om de tweede contest in dit nieuwe format gewonnen te hebben.
Om je op weg te helpen
Om je op weg te helpen kun je hieronder 3 testbestanden downloaden welke als voorbeeld dienen van de uiteindelijke bestanden zoals wij die gaan gebruiken om jullie inzending op los te laten.
Testbestand I
Testbestand II
Testbestand III
Daarnaast ben je, net als in vorige contest, vrij om zelf een 'validator' te schrijven (en online te zetten) om te controleren of je uitvoer voldoet aan de eisen. Wij, de crew, zullen onze eigen validator inzetten om de uiteindelijke uitvoer van jullie inzendingen te controleren. Laatstgenoemde blijft, in ieder geval tot na de deadline, intern en is dus niet voor jullie beschikbaar.
Tot slot...
...willen we jullie natuurlijk (weer) heel veel succes wensen. We hopen dat je er plezier in gaat hebben om aan deze contest mee te doen, en natuurlijk hopen we dat je niet de enige bent. Hoe meer competitie, hoe beter!
May the force be with you!
[Voor 100% gewijzigd door RobIII op 27-02-2007 10:41]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Roses are red Violets are blue, Unexpected ‘{‘ on line 32.
Over mij