Mathematica 188 185 170 115 130 46 48 Zeichen
Erläuterung
In früheren Versionen habe ich ein Diagramm mit Positionen erstellt, die einen Schachbrettabstand von 1 voneinander haben. GraphComponentsDann ergab sich die Anzahl der Inseln, eine pro Komponente.
In der vorliegenden Version werden MorphologicalComponentsGruppen von Gruppen in den Array - Regionen gefunden und nummeriert, in denen sie 1physikalisch zusammenhängen. Da keine grafischen Darstellungen erforderlich sind, ergibt sich eine enorme Codeeinsparung.
Code
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&
Beispiel
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}}]
5
Wie es funktioniert
Daten werden als Array eingegeben; In Mathematica ist dies eine Liste von Listen.
Im Eingabearray werden die Daten durch die Ersetzung in 1's und 0' s konvertiert
/.{"."->0,"*"->1}
Wo /.ist ein Infix von ReplaceAllgefolgt von Ersetzungsregeln. Dadurch wird das Array im Wesentlichen in ein Schwarzweißbild umgewandelt. Alles was wir tun müssen, ist die Funktion anzuwenden Image.
Image[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}} /. {"." -> 0, "*" -> 1}]

Die weißen Quadrate entsprechen den Zellen mit dem Wert 1.
Das Bild unten zeigt einige Schritte, die der Ansatz verwendet. Die Eingabematrix enthält nur 1's und 0' s. Die Ausgabematrix kennzeichnet jeden morphologischen Cluster mit einer Nummer. (Ich habe sowohl die Eingabe- als auch die Ausgabematrizen eingewickelt MatrixForm, um ihre zweidimensionale Struktur hervorzuheben.)
MorphologicalComponentsErsetzt 1s durch eine Ganzzahl, die der Clusternummer jeder Zelle entspricht.

Max Gibt die größte Clusternummer zurück.
Anzeigen der Inseln
Colorize färbt jede Insel einzigartig.
