Imagine uma matriz bidimensional de valores booleanos, onde os 0s representam quadrados de grama em um terreno retangular e os 1s representam cercas.
Escreva uma função que aceite a matriz 2D como entrada e determine se você pode viajar de qualquer área de grama para qualquer outra área de grama, usando apenas movimentos norte / leste / oeste / sul, sem entrar em uma cerca.
Se qualquer área de grama na matriz estiver totalmente cercada por cercas (o que significa que você não pode viajar N / E / W / S para alcançar todas as outras áreas de grama na matriz) a função deve retornar false; caso contrário, ele deve retornar true.
Abaixo estão duas matrizes de amostra que você pode usar como entradas, embora sua função possa manipular não apenas essas, mas qualquer matriz 2D de valores booleanos:
0 0 0 0 0
0 1 0 0 0
0 1 1 1 1
0 0 0 0 0
0 0 0 1 1
(should return true)
0 1 0 1 0
0 1 1 0 0
0 0 0 0 0
0 0 0 1 0
1 1 1 1 0
(should return false, since the middle 0 in the top row is fully enclosed)
O menor código de trabalho vence. Eu escolherei o vencedor depois que uma semana se passou ou não houve novos envios dentro de 24 horas.
1 1 1; 1 0 1; 1 1 1? Há uma célula de grama no centro. Visualmente, a célula de grama no centro é totalmente cercada por cercas, mas, por sua definição, não é.