Contar elementos

Escreva uma função que conte o número de elementos separados na região.

Entrada

Uma matriz retangular, uma lista de listas, com zeros e uns em cada célula. Um elemento conectado é uma coleção de uns que compartilham a borda por meio de um lado. Elementos separados não se tocam, nem mesmo por um canto. Os elementos não têm buracos.

Saída

O número de elementos separados.

Exemplos

region = [
  [0, 0, 0, 0, 0, 0, 0],
  [0, 0, 1, 0, 1, 1, 0],
  [0, 1, 1, 0, 1, 0, 0],
  [0, 0, 0, 0, 1, 1, 0],
  [0, 1, 1, 0, 1, 1, 0],
  [0, 0, 0, 0, 0, 0, 0],
]

count_shapes(region) ➞ 3

Observações

  • É possível aprender a localizar diferentes elementos na série Chain Reaction.
  • As regiões de entrada dos testes levam até 4 segundos para serem montadas. Soluções com complexidade O(rows * columns) permitem passar nos testes nos 8 segundos restantes (3.5 segundos são suficientes).
  • O objetivo principal deste desafio é encontrar uma solução eficiente.