Code Challenge

Splash paint. Misschien kunst met een kleine k, maar leuk is het wel. Leg een doek op de grond en gooien maar met de verf. In de challenge van deze editie gaan we op zoek naar de kleinste, aaneengesloten verfvlek op een doek. Om het eenvoudig te houden, is het doek opgedeeld in een 12×12 grid. Een voorbeeld input voor je programma is als volgt:

O,X,O,O,O,O,O,O,O,O,O,O,

X,X,O,O,O,X,X,X,O,O,O,O,

X,X,X,O,X,O,X,X,O,O,O,O,

O,O,O,O,O,O,O,O,O,O,O,X,

O,O,O,X,X,O,O,O,O,O,X,O,

O,O,O,O,O,O,O,O,O,O,O,O,

O,O,O,O,O,O,O,O,O,O,O,O,

O,O,X,X,X,X,X,X,O,O,O,O,

O,O,O,O,X,X,O,O,O,O,O,O,

X,O,O,O,O,X,O,O,O,X,X,X,

X,O,O,O,O,O,X,X,O,X,X,X,

X,X,X,X,O,O,O,X,O,O,O,O

 

(ook te vinden via bit.ly/verfspetters)

 

Twaalf regels met twaalf posities, waarbij X een verfspetter is en een O leeg doek aanduidt. Alle verfdruppels die elkaar horizontaal, verticaal of diagonaal raken, vormen samen een aaneengesloten vlek. We zijn dus op zoek naar de vlek met het kleinste oppervlak. Wanneer er meerdere vlekken met dezelfde oppervlakte zijn, zoeken we degene die je het eerst tegenkomt wanneer je van links naar rechts en van boven naar beneden het doek doorloopt. De output van je oplossing bestaat uit de oppervlakte van de vlek en de (X,Y) coördinatie van de verfspetters in de vlek. Linksboven is coördinaat (0, 0). De coördinaten in je output geef je ook in volgorde van links naar rechts en van boven naar beneden. Voor het gegeven voorbeeld is de output dus:

 

2 => (11, 3), (10, 4)

(en dus niet 2 => (3, 4), (4, 4))

 

De oplossing moet een main-methode bevatten die het grid inleest en het correcte antwoord afdrukt. Of je inleest vanuit een file of stdin mag je helemaal zelf weten. Zorg naast de sourcecode ook voor een script in je repository dat de oplossing toepast op het gegeven voorbeeld.

 

Er is deze keer wel een twist! We zijn namelijk niet op zoek naar de mooiste, snelste of elegantste oplossing. Slechts één criterium telt: des te kleiner de oplossing, des te beter. Kleiner betekent in dit geval minder karakters (output van `wc -c`) in je oplossing. Uiteraard tellen alleen correcte oplossingen mee. Om het eerlijk te houden, mag je voor deze challenge alleen Java code insturen.