Du bist einer der Entwickler des Spiels „Sea Battle“. Deine Aufgabe ist es nun, eine der zentralen Statistiken im Spiel zu aktualisieren. Angesichts eines Spielbretts (Grid) sollst du herausfinden, wie viele Schiffe jeweils healthy (unbeschädigt), dead (komplett getroffen) und wounded (teilweise getroffen) sind. Dabei gelten folgende Bedingungen:
Keine Schiffe liegen direkt nebeneinander. Das heißt: Wenn zwei benachbarte Felder im Gitter als Teil eines Schiffs markiert sind, handelt es sich um dasselbe Schiff.
In dieser Version des Spiels können Schiffe beliebige Formen annehmen; sie müssen nicht geradlinig sein. (Dies ist ein fortgeschrittener Modus, der Premium-Nutzern vorbehalten ist.)
Wurde kein Bombentreffer an einem Schiff verzeichnet, ist das Schiff healthy.
Sind alle Felder eines Schiffs bombardiert, gilt das Schiff als dead.
Wenn nur ein Teil der Felder bombardiert wurde, gilt das Schiff als wounded.
Dein Programm soll schließlich die Anzahl der healthy, dead und wounded Schiffe im aktuellen Gitterzustand ausgeben.
Eingabe
Die erste Zeile der Eingabe enthält zwei Zeichen r und c (1 ≤ r, c ≤ 50) – die Zeilen- und Spaltenanzahl des Gitters.
Die nächsten r Zeilen enthalten jeweils c Zeichen, die das Gitter repräsentieren:
. steht für Wasser (kein Schiff)
s steht für eine unbeschädigte Schiffszelle
b steht für eine bombardierte Schiffszelle
Ausgabe
Das Programm soll drei Zahlen ausgeben – die Anzahl der healthy, dead und wounded Schiffe.