Flood Fill
By E.Hooijmeijer
1 Inleiding
Dat CodeRuler van IBM is best wel lollig dacht Bill. Wereld Overheersing. Paardjes.
Kasteeltjes. Lollig. Alleen ik wil wel winnen. En dat is nog niet zo makkelijk.
Om CodeRuler efficient te kunnen spelen moet je een goed vlak vul algoritme hebben.
En aangezien Bill ogenschijnlijk meer geld dan wijsheid heeft, heeft hij jou ingehuurd
om voor hem uit te zoeken hoe je een efficient vlak vul algoritme maakt.
2 Opdracht
Implementeer een zogenaamd 'floodfill' algoritme waarbij vanaf een gegeven coordinaat
alle aaneensluitende niet gezette pixels gezet worden.
3 Voorbeeld
Met de linker bitmap als bron en coordinaten (2,2) moet het resultaat de
rechter bitmap zijn :
Voor Na . is een niet gezette pixel.
...... ...... x is een gezette pixel.
.xxxx. .xxxx. S geeft het start coordinaat aan
.xS.x. .xxxx. (op een niet gezette pixel)
.x..x. .xxxx.
.xxxx. .xxxx.
...... ......
4 Tips
- Recursie is best wel handig voor dit soort problemen.
Test case 1 : One empty Pixel
Given the following bitmap, perform a floodfill operation starting at 0,0
.
The expected result is :
X
Test case 2 : One set Pixel
Given the following bitmap, perform a floodfill operation starting at 0,0
X
The expected result is :
X
Test case 3 : Great Void
Given the following bitmap, perform a floodfill operation starting at 1,1
...
...
...
The expected result is :
XXX
XXX
XXX
Test case 4 : Great Wall
Given the following bitmap, perform a floodfill operation starting at 2,2
XXXXX
X...X
X...X
X...X
XXXXX
The expected result is :
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
Test case 5 : The Path
Given the following bitmap, perform a floodfill operation starting at 3,1
XXXXXXX
X.....X
X.XXX.X
X.X.X.X
X...X.X
XXXXX.X
X.....X
XXXXXXX
The expected result is :
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
Test case 6 : Diamonds 4Ever
Given the following bitmap, perform a floodfill operation starting at 2,2
..X..
.X.X.
X...X
.X.X.
..X..
The expected result is :
..X..
.XXX.
XXXXX
.XXX.
..X..
Test case 7 : Leaving Las Pixel
Given the following bitmap, perform a floodfill operation starting at 0,0
.....
...X.
X.X.X
...X.
.....
The expected result is :
XXXXX
XXXXX
XXX.X
XXXXX
XXXXX