Как посчитать группы одинаковых ячеек в 2d массиве?

Вот пример (считая черных):

вход:

выход:

5 4 // 5 groups (4 squares each)
1 1 // 1 group containing 1 square

Пока я не могу придумать ничего лучшего, чем мучительная итерация. Возможно ли получить эти группы рекурсивным способом? Спасибо

Ответы на вопрос(3)

Ваш ответ на вопрос