Schreiben Sie ein Programm oder eine Funktion, die eine mehrzeilige Folge von 0
's und 1
' s enthält. Andere Zeichen werden in der Zeichenfolge sein , und die Zeichenfolge wird immer rechteckig sein (alle Linien dieselbe Anzahl von Zeichen haben), mit den Abmessungen so klein wie 1 × 1, aber ansonsten ist das 0
"s und 1
s können willkürlich angeordnet sein.
Sie können davon ausgehen, dass die Zeichenfolge eine optionale nachgestellte Newline enthält. Falls gewünscht, können Sie zwei verschiedene druckbare ASCII- Zeichen anstelle von 0
und verwenden 1
.
Drucke oder einen Rück truthy Wert , wenn alle von dem Pfad verbunden Regionen beide 0
's und 1
ist in der Zeichenfolge sind feste Rechtecken , sonst Ausgabe eines falsy Wert .
Eine pfadverbundene Region von 0
's bedeutet, dass von einer beliebigen 0
Region in der Region alle anderen 0
erreicht werden können, indem man sich nur nach oben, unten, links und rechts zu den anderen bewegt 0
(und sich nicht diagonal bewegt, sich nicht zu einer anderen bewegt 1
, und nicht außerhalb der Zeichenkettengrenzen bewegen). Die gleiche Idee gilt für 1
pfadverbundene Regionen.
Ein ausgefülltes Rechteck von 0
's bedeutet, dass der gesamte Bereich des Rechtecks mit 0
' s und no 1
's gefüllt ist . Die gleiche Idee gilt für 1
ausgefüllte Rechtecke.
Der kürzeste Code in Bytes gewinnt. Tiebreaker ist frühere Antwort.
(Beachten Sie, dass die Zeichenfolge nicht mit toroidalen Randbedingungen umwickelt wird .)
Beispiele
1) Diese Eingangszeichenfolge hat 3 pfadverbundene Bereiche (2 für 0
und 1 für 1
). Nur der rechte untere 00
Bereich ist ein ausgefülltes Rechteck, daher wäre die Ausgabe falsch.
0011
0111
0100
2) Diese Eingangszeichenfolge hat 4 pfadverbundene Bereiche (2 für beide 0
und 1
). Alle von ihnen sind feste Rechtecke, so dass die Ausgabe wahr sein würde.
0011
0011
1100
3) Dieser Eingang verfügt über 2 pfadverbundene Bereiche, von denen jedoch nur einer ein ausgefülltes Rechteck ist, sodass der Ausgang falsch wäre.
00000000
01111110
00000000
4) Dieser Eingang hat nur 1 Pfad verbundenen Bereich und ist trivial ein festes Rechteck, so dass der Ausgang wahr ist.
11111111
11111111
11111111
Testfälle
Ein T
knapp unter der Eingabezeile stehendes Zeichen bedeutet Wahrhaftigkeit, F
bedeutet Falschheit.
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