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 1s 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 0und verwenden 1.
Drucke oder einen Rück truthy Wert , wenn alle von dem Pfad verbunden Regionen beide 0's und 1ist in der Zeichenfolge sind feste Rechtecken , sonst Ausgabe eines falsy Wert .
Eine pfadverbundene Region von 0's bedeutet, dass von einer beliebigen 0Region in der Region alle anderen 0erreicht 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 1pfadverbundene 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 1ausgefü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 0und 1 für 1). Nur der rechte untere 00Bereich 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 0und 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 Tknapp unter der Eingabezeile stehendes Zeichen bedeutet Wahrhaftigkeit, Fbedeutet 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