Écrivez un programme ou une fonction qui accepte une chaîne multiligne de 0
«et 1
». Aucun autre caractère ne sera dans la chaîne et la chaîne sera toujours rectangulaire (toutes les lignes auront le même nombre de caractères), avec des dimensions aussi petites que 1 × 1, mais sinon les 0
'et 1
' peuvent être arrangés arbitrairement.
Vous pouvez supposer que la chaîne a un retour à la ligne facultatif et si vous le souhaitez, vous pouvez utiliser deux caractères ASCII imprimables distincts à la place de 0
et 1
.
Affiche ou retourne une valeur vraie si toutes les régions connectées au chemin des deux 0
et 1
de la chaîne sont des rectangles pleins , sinon émettent une valeur fausse .
Un chemin région connectée de 0
« les moyens de qu'à partir de l' une quelconque 0
de la région, tous les autres 0
» s peut être atteint que par le déplacement de haut en bas, à gauche et à droite avec une autre 0
« s (et ne se déplaçant en diagonale, pas se déplacer l' une quelconque 1
, et ne se déplace pas en dehors des limites de la chaîne). La même idée s'applique aux 1
régions connectées au chemin.
Un rectangle plein de 0
«s» signifie que toute la zone du rectangle est remplie de 0
«et de non 1
». La même idée s'applique aux 1
rectangles pleins.
Le code le plus court en octets gagne. Tiebreaker est une réponse antérieure.
(Notez que la chaîne ne s'enroule pas avec des conditions aux limites toroïdales .)
Exemples
1) Cette chaîne d'entrée a 3 régions connectées au chemin (2 pour 0
et 1 pour 1
). 00
Cependant, seule la région inférieure droite est un rectangle plein, donc la sortie serait fausse.
0011
0111
0100
2) Cette chaîne d'entrée a 4 régions connectées au chemin (2 pour les deux 0
et 1
). Tous sont des rectangles pleins donc la sortie serait véridique.
0011
0011
1100
3) Cette entrée a 2 régions connectées à un chemin, mais une seule d'entre elles est un rectangle plein, donc la sortie serait fausse.
00000000
01111110
00000000
4) Cette entrée n'a qu'une seule région connectée par chemin et est trivialement un rectangle plein, donc la sortie est véridique.
11111111
11111111
11111111
Cas de test
Un T
juste en dessous de la chaîne d'entrée signifie véridique, F
signifie fausseté.
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