Mathematica 188 185 170 115 130 46 48 символов
объяснение
В более ранних версиях я строил график позиций с расстоянием шахматной доски 1 друг от друга. GraphComponentsзатем выявлено количество островов, по одному на компонент.
Настоящая версия использует MorphologicalComponentsдля поиска и нумерации кластеров единиц в массиве - области, где 1они физически смежны. Поскольку в графике нет необходимости, это приводит к огромной экономии кода.
Код
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&
пример
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}}]
5
Как это работает
Данные вводятся в виде массива; в Mathematica это список списков.
Во входном массиве данные преобразуются в 1's 0' и 's' путем замены.
/.{"."->0,"*"->1}
где /.- инфиксная форма, за которой ReplaceAllследуют правила замены. Это по существу преобразует массив в черно-белое изображение. Все, что нам нужно сделать, это применить функцию Image.
Image[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}} /. {"." -> 0, "*" -> 1}]

Белые квадраты соответствуют ячейкам, имеющим значение 1.
На рисунке ниже показаны некоторые шаги, которые использует этот подход. Входная матрица содержит только 1«и 0». Выходная матрица маркирует каждый морфологический кластер числом. (Я обернул входную и выходную матрицы, MatrixFormчтобы выделить их двумерную структуру.)
MorphologicalComponentsзаменяет 1s на целое число, соответствующее номеру кластера каждой ячейки.

Max возвращает наибольшее число кластеров.
Отображение островов
Colorize раскрасит каждый остров по-своему.
