Opdracht 0. Tentje-boompje · PDF fileTweede ronde Nederlandse Informatica Olympiade 2006....

3

Click here to load reader

Transcript of Opdracht 0. Tentje-boompje · PDF fileTweede ronde Nederlandse Informatica Olympiade 2006....

Page 1: Opdracht 0. Tentje-boompje · PDF fileTweede ronde Nederlandse Informatica Olympiade 2006. Opgave 0 deel I. Pagina 1 van 3. Opdracht 0. Tentje-boompje puzzels. Deze beschrijving is

Tweede ronde Nederlandse Informatica Olympiade 2006. Opgave 0 deel I. Pagina 1 van 3.

Opdracht 0. Tentje-boompje puzzels. Deze beschrijving is afkomstig van www.puzzelhulp.nl

Een wat zeldzamer puzzel heet Tentje-Boompje. Het idee is dat het puzzelveld een camping voorstelt. Op de camping staan een flink aantal bomen. Er wordt verteld dat er een aantal kampeerders hun tent wil opslaan. De puzzelaar speelt de campingbeheerder die iedereen een plekje wil geven.

Zo'n plek moet aan twee eisen voldoen. Er moet een boom direct naast de tent staan (schuin telt niet) en er mag geen andere tent naast staan, ook niet schuin. Ten slotte moeten in elke rij en elke kolom precies zoveel staan als er achter staat.

Stel dat een kleine camping er als volgt uit ziet:

�� �� �� �� �� �� ��

�� � � � ���

��� � � �

��

��� � � �

��

��� � � �

��

��� � � �

��

�� �� �� �� �� �� ��

De eerste stap is makkelijk. De vierde kolom en de vierde rij bevatten geen tentjes, dus die kunnen we afstrepen. Ook de vakjes die te ver van een boom staat, of er diagonaal naast staan, strepen we af. Uiteraard kunt u op papier gewoon een stip in zo'n vakje zetten.

�� �� �� �� �� �� ��

��� � � �

��

��� � � �

��

��� � � �

��

��� � � �

��

��� � � �

��

�� �� �� �� �� �� ��

De eerste rij en de tweede kolom kunnen nu worden afgemaakt. Er zijn immers evenveel open plaatsen als dat er tentjes moeten staan. Let erop dat bij elk tentje in de acht vakjes er omheen geen andere tentjes kunnen staan.

�� �� �� �� �� �� ��

��� � � �

��

��� � � �

��

��� � � �

��

��� � � �

��

��� � � �

��

�� �� �� �� �� �� ��

De rest kan nu eenvoudig ingevuld worden.

�� �� �� �� �� �� ��

��� � � �

��

��� � � �

��

��� � � �

��

��� � � �

��

��� � � �

��

�� �� �� �� �� �� ��

Page 2: Opdracht 0. Tentje-boompje · PDF fileTweede ronde Nederlandse Informatica Olympiade 2006. Opgave 0 deel I. Pagina 1 van 3. Opdracht 0. Tentje-boompje puzzels. Deze beschrijving is

Tweede ronde Nederlandse Informatica Olympiade 2006. Opgave 0 deel I. Pagina 2 van 3.

Voor deze opgave ga je een aantal aspecten van zo’n tentje-boompje onderzoeken. De opgave bestaat uit twee delen; deel I ontvang je via de mail op vrijdagmiddag, deel II ontvang je in Leiden of Twente op zaterdagochtend. Invoer: Invoer is een bestand diagram.in. Op de eerste regel staat een getal R, met 2 � R � 12, dat het aantal regels van het diagram aangeeft. Op de tweede regel staat een getal K, met 2 � K � 12, dat het aantal kolommen van het diagram aangeeft. Vervolgens zijn er R regels die de plaatsing van de bomen beschrijven. Op iedere regel staan K tekens, een punt als er geen boom staat of een hoofdletter B als er wel een boom staat, en nog een cijfer C, met 0 � C � 6, dat aangeeft hoeveel tenten er op deze regel van het diagram geplaatst moeten worden. Daarna is er nog een regel met K cijfers C, weer elk met 0 � C � 6, waarmee het aantal te plaatsen tenten per kolom wordt aangegeven. Voorbeeld bestanden: diagram0.in diagram1.in (zie ook de afbeelding van bladzijde 1) 5 10 5 10 ..B..1 ..B.B...B.2 ...B.1 B.........2 ...B.2 ...B....B.2 B...B0 B....B....2 ..B..2 ...B.....B2 12102 .B.....B..2

...B.B...B2

.B........2

......B...1

.B.B....B.3 3223112222

Deze bestanden worden bij de voorbeelden bij alle opgaven als invoer gebruikt.

Voorbeeldbestanden en testen: Er zijn bestanden diagram0.in, diagram1.in tot en met diagram5.in beschikbaar waarmee je je programma kunt uitproberen. Er is een batchfile test0.bat, die je kunt gebruiken op de volgende manier: test0 nio0a diagram0.in Met deze opdracht test je het programma nio0a (of op deze plaats één van je andere programma's), waarbij vooraf eerst de invoer uit diagram0.in (of op deze plaats één van de andere bestanden) naar het bestand diagram.in wordt gekopieerd. Je zult dan zelf moeten controleren of het programma binnen de tijdlimiet stopt en de goede uitvoerfile maakt. Opdracht 0 deel I. Taakoverzicht. Onderdeel Programma Uitvoer Tijdlimiet per test Aantal testen Punten per test Totaal

0A nio0a 0a.uit 1 sec 5 2 10 0B nio0b 0b.uit 1 sec 5 3 15 0C nio0c 0c.uit 1 sec 5 5 25

Page 3: Opdracht 0. Tentje-boompje · PDF fileTweede ronde Nederlandse Informatica Olympiade 2006. Opgave 0 deel I. Pagina 1 van 3. Opdracht 0. Tentje-boompje puzzels. Deze beschrijving is

Tweede ronde Nederlandse Informatica Olympiade 2006. Opgave 0 deel I. Pagina 3 van 3.

Opdracht 0A: Aantal te plaatsen tenten. Schrijf een programma nio0a dat een bestand diagram.in inleest. Uitvoer is een bestand 0a.uit van één regel; hierop staat aangeven hoeveel tenten er in het ingevoerde diagram moeten worden geplaatst. Voorbeelden: 6 20 Opdracht 0B: Zeker lege vakjes. Schrijf een programma nio0b dat een bestand diagram.in inleest. Uitvoer is een bestand 0b.uit dat bestaat uit R regels van K tekens. Als op een vakje een boom staat staat er een B aangegeven. Als er op een vakje zeker geen tent kan staan, omdat het vakje niet horizontaal of vertikaal naast een boom staat of omdat er geen tenten in de betreffende rij of kolom mogen worden geplaatst, staat er een G (van gras). Op de plaats van de overige vakjes staat een punt. Voorbeelden: G.BGG ..B.B.G.B. GG.B. B....GGG.G .G.B. .G.B..G.B. BGGGB B.G..B.G.. ..BG. ...B..G..B

.B..G..B.. G..B.B...B .B..G..GG. G.G.G.B..G .B.B.G..B.

Opdracht 0C: Zo ver mogelijk invullen. Schrijf een programma nio0c dat een bestand diagram.in inleest. Uitvoer is een bestand 0c.uit dat bestaat uit R regels van K tekens. Als op een vakje een boom staat staat er een B aangegeven. Als er op een vakje zeker geen tent kan staan, omdat het vakje niet horizontaal of vertikaal naast een boom staat of omdat er geen tenten in de betreffende rij of kolom mogen worden geplaatst, staat er een G (van gras). Als bekend is dat er wel een tent staat staat er een T aangegeven. Op de plaats van de overige vakjes staat een punt. Voorbeelden: GTBGG ..B.B.G.B. GGGTB B....GGG.G TGTBG .G.B..G.B. BGGGB B.G..B.G.. GTBGT ...B..G..B

.B..G..B.. G..B.B...B .B..G..GG. G.G.G.B..G .B.B.G..B.

Let op: Het is niet de bedoeling bij deze opgave al te gaan zoeken naar een complete oplossing. Soms (zoals bij het voorbeeld van diagram0.in) volgt die onmiddellijk uit de randvoorwaarden, door de aanwijzingen die hierboven staan te volgen. Als je het dan nog niet weet (zoals bij diagram1.in), zet je gewoon stippen voor de resterende vakjes.