Dit is de gearchiveerde website van de CodeCup NIO 2011.
Klik hier om naar de huidige website te gaan.
CodeCup NIO 2011 - Een online programmeerwedstrijd.  

CodeCup NIO 2011 - Een online programmeerwedstrijd.

Invers, het spel

Een spel van Kris Burm, gepubliceerd door Peri Spiele 1991.

Inleiding

Invers is een spel voor twee spelers dat gespeeld wordt op een 6x6 bord. Een speler speelt met de gele tegeltjes; de ander met de rode tegeltjes. Het doel van het spel is om alle eigen tegeltjes die oorspronkelijk op het bord lagen eraf te duwen.

Hoe gaat het spel?

De beginopstelling bevat 18 gele en 18 rode tegeltjes. De gele speler heeft een geel tegeltje in zijn hand en de rode speler heeft een rood tegeltje in zijn hand. De gele speler start. Hij moet met zijn tegeltje van een rij of een kolom de verst wegelegen tegel van het bord afduwen. Het daarvoor gebruikte tegeltje wordt daarbij op zijn kop ingebracht. Het tegeltje dat er van af is gevallen wordt gebruikt in zijn volgende beurt. Alle in het spel gebrachte tegeltjes worden er op zijn kop ingeschoven. Op deze manier zouden uiteindelijk alle oorspronkelijke tegeltjes verdwijnen.

De enige regel voor het er afduwen van tegeltjes

Als je een tegeltje van het bord afduwt, geldt slechts een beperking: je mag namelijk nooit een omgedraaid tegeltje van je tegenstander van het bord afduwen! Bijvoorbeeld, in het plaatje zijn de volgende zetten verboden voor de gele speler: A, C, D, E, F, L, O, Q, S, U, V, W.

Hoe moet jouw programma het spel spelen?

Jij moet een programma schrijven dat een zet van je tegenstander ontvangt via de jurysoftware en dat vervolgens een zet teruggeeft aan de jurysoftware. Het is aan jou de taak om aan de hand van de laatste informatie een zo goed mogelijke zet te vinden!

De zetten van de jurysoftware moet je lezen vanaf stdin (standaard input) en je eigen zetten moet je afdrukken naar stdout (standaard uitvoer). Om het simpel te zeggen komt het er op neer dat je een zet inleest alsof je een string opvraagt vanaf het toetsenbord en je zet speelt door het af te drukken als een string naar het scherm.

Als eerste actie moet je programma er achter komen of je met geel of met rood speelt. Als je programma een "Y" inleest dan speel je met geel en dan wordt jouw eerste zet als reactie verwacht. In het andere geval speel je dus met rood en is de string die je gekregen hebt de eerste zet van de gele speler. Je mag er vanuit gaan dat die zet altijd correct is. Dan wordt van jou de eerste tegenzet verwacht. Zo gaat dat een tijdje door.

Als je programma een foute zet doet, of als je programma crasht of er te lang over doet, dan verliest je programma. In dat geval neemt de jurysoftware jouw taak over zodat het andere programma het spelletje kan uitspelen. De jurysoftware zal "zomaar wat doen" om je tegenstander de gelegenheid te geven om een goede score te kunnen halen. Als je programma "Z" inleest in plaats van een gewone zet, dan betekent dat dat er iemand heeft gewonnen en dat je jouw programma op de normale manier moet beëindigen.

Als je een zet doorgeeft aan de jurysoftware moet je de string verplicht afsluiten met een newline. Ook ben je verplicht om de zet daarna te flushen zodat de jurysoftware niet gaat zitten wachten totdat de computer de zet heeft doorgegeven aan de jurysoftware.

De puntentelling

Als een speler al zijn eigen oorspronkelijke tegeltjes van het bord afschuift, verdient hij daarvoor 18 punten. Daar mag hij bij optellen het aantal oorspronkelijke tegeltjes dat van zijn tegenstander nog op het bord ligt. Het is dus lonend om je tegenstander zoveel mogelijk dwars te zitten. De verliezende speler krijgt nul punten.

Als beide spelers elk 100 zetten hebben gedaan en er nog geen winnaar bekend is, eindigt het spel gelijk en verdienen beide spelers 9 punten. Het puntenaantal voor de speler die meer eigen oorspronkelijke tegeltjes van het bord heeft kunnen (of laten) afduwen dan zijn tegenstander, mag zijn 9 punten verhogen met het verschil van hoeveel er van hemzelf zijn afgeduwd min het aantal van zijn tegenstander. Bij zijn tegenstander wordt dat verschil in mindering gebracht op de 9 punten. Als daardoor een negatieve score ontstaat wordt zijn score nul.

Als een speler wordt gediskwalificeerd, krijgt hij nul punten. De andere speler krijgt het aantal punten zoals dat in de regels hierboven is uitgelegd. Datis het meest eerlijk omdat het spel speciaal voor hem is uitgespeeld met de jurysoftware als slecht spelende tegenstander.

Voorbeeld van de communicatie met de jurysoftware

SpelerInvoerUitvoer
GeelY
GeelG
RoodG
RoodK
GeelK
Geel...