Mathematica 188 185 170 115 130 46 48 caratteri
Spiegazione
Nelle versioni precedenti, ho creato un grafico delle posizioni con una distanza di 1 scacchiera l'una dall'altra. GraphComponentsquindi ha rivelato il numero di isole, una per componente.
La presente versione utilizza MorphologicalComponentsper trovare e numerare i cluster di quelli nella matrice - regioni in cui 1sono fisicamente contigui. Poiché la rappresentazione grafica non è necessaria, ciò si traduce in un'enorme economia di codice.
Codice
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&
Esempio
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}}]
5
Come funziona
I dati sono inseriti come un array; in Mathematica, questo è un elenco di elenchi.
Nell'array di input, i dati vengono convertiti in 1"se 0" mediante la sostituzione
/.{"."->0,"*"->1}
dove /.è una forma infissa ReplaceAllseguita da regole di sostituzione. Questo essenzialmente converte l'array in un'immagine in bianco e nero. Tutto quello che dobbiamo fare è applicare la funzione Image,.
Image[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}} /. {"." -> 0, "*" -> 1}]

I quadrati bianchi corrispondono alle celle che hanno il valore, 1.
L'immagine seguente mostra alcuni passaggi che l'approccio utilizza. La matrice di input contiene solo 1'e 0'. La matrice di output identifica ciascun cluster morfologico con un numero. (Ho avvolto entrambe le matrici di input e output MatrixFormper evidenziare la loro struttura bidimensionale.)
MorphologicalComponentssostituisce 1s con un numero intero corrispondente al numero di cluster di ciascuna cella.

Max restituisce il numero di cluster più grande.
Visualizzazione delle isole
Colorize colora ciascuna isola in modo univoco.
