Escreva um programa ou função que utilize uma sequência de linhas múltiplas de 0's 1' e 's. Nenhum outro caractere estará na string e a string sempre será retangular (todas as linhas terão o mesmo número de caracteres), com dimensões tão pequenas quanto 1 × 1, mas, caso contrário, os 0's 1' e 's podem ser organizados arbitrariamente.
Você pode assumir que a string possui uma nova linha à direita opcional e, se desejar, pode usar dois caracteres ASCII imprimíveis distintos no lugar de 0e 1.
Imprima ou retorne um valor verdadeiro se todas as regiões conectadas ao caminho de 0's 1' e 's na cadeia de caracteres forem retângulos sólidos , caso contrário, produz um valor falso .
Um caminho conectado à região de 0significa que, de qualquer um 0na região, todos os outros 0podem ser alcançados movendo-se para cima, para baixo, esquerda e direita para os outros 0(e não se movendo na diagonal, não se movendo para nenhum 1, e não se movendo fora dos limites de cordas). A mesma idéia se aplica ao 1caminho de regiões conectadas.
Um retângulo sólido de 0's significa que toda a área do retângulo é preenchida com 0' e 1' não '. A mesma idéia se aplica a 1retângulos sólidos.
O código mais curto em bytes vence. O desempatador é a resposta anterior.
(Observe que a corda não se enrola com as condições de contorno toroidais .)
Exemplos
1) Esta sequência de entrada possui 3 regiões conectadas ao caminho (2 para 0e 1 para 1). Apenas a 00região inferior direita é um retângulo sólido, portanto a saída seria falsa.
0011
0111
0100
2) Esta sequência de entrada possui 4 regiões conectadas ao caminho (2 para ambos 0e 1). Todos eles são retângulos sólidos, portanto a saída seria verdadeira.
0011
0011
1100
3) Esta entrada possui 2 regiões conectadas ao caminho, mas apenas uma delas é um retângulo sólido, portanto a saída seria falsa.
00000000
01111110
00000000
4) Esta entrada possui apenas 1 região conectada ao caminho e é trivialmente um retângulo sólido, portanto a saída é verdadeira.
11111111
11111111
11111111
Casos de teste
Um Tlogo abaixo da string de entrada Fsignifica verdade , significa falsidade.
0
T
1
T
00
T
01
T
10
T
11
T
0000000
T
1111111
T
011100100100101100110100100100101010100011100101
T
00
11
T
01
10
T
01
11
F
00
01
F
11
11
T
110
100
F
111
000
T
111
101
111
F
101
010
101
T
1101
0010
1101
0010
T
1101
0010
1111
0010
F
0011
0111
0100
F
0011
0011
1100
T
00000000
01111110
00000000
F
11111111
11111111
11111111
T
0000001111
0000001111
T
0000001111
0000011111
F
0000001111
1000001111
F
1000001111
1000001111
T
1110100110101010110100010111011101000101111
1010100100101010100100010101010101100101000
1110100110010010110101010111010101010101011
1010100100101010010101010110010101001101001
1010110110101010110111110101011101000101111
F