Hintergrund
Ein Polyomino heißt L-konvex , wenn es möglich ist, über einen L-förmigen Pfad von einem Plättchen zu einem anderen zu gelangen, dh einen Pfad, der in die Hauptrichtung verläuft und die Richtung höchstens einmal ändert. Zum Beispiel das Polyomino von 1
s in der Figur
0 0 1 1 1 0
1 1 1 1 0 0
1 1 0 0 0 0
ist nicht L-konvex, da beide L-förmigen Pfade von links unten 1
nach rechts oben a 1
enthalten 0
:
0>0>1>1>1 0
^ ^
1 1 1 1 0 0
^ ^
1>1>0>0>0 0
Das Polyomino von 1
s in dieser Figur ist jedoch L-konvex:
0 1 1 1 0 0
1 1 1 1 1 1
0 1 1 0 0 0
Eingang
Ihre Eingabe ist ein 2D-Array von Bits im ursprünglichen Format Ihrer Sprache oder eine durch Zeilenumbrüche getrennte Zeichenfolge, wenn unsere Sprache keine Arrays enthält. Es wird garantiert, um mindestens ein zu enthalten 1
.
Ausgabe
Ihre Ausgabe soll ein wahrer Wert sein, wenn die Menge von 1
s ein L-konvexes Polyomino ist, und ein falscher Wert, wenn nicht. Diese Ausgaben müssen konsistent sein: Sie müssen für alle L-konvexen Eingaben den gleichen Wahrheitswert und für andere den gleichen falschen Wert ausgeben. Beachten Sie, dass eine getrennte Menge von 1
s (die kein Polyomino ist) zu einer falschen Ausgabe führt.
Regeln und Wertung
Sie können entweder ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt und Standardlücken sind nicht zulässig.
Testfälle
Diese Testfälle sollten auch funktionieren, wenn Sie die Arrays drehen oder spiegeln oder Zeilen von 0
s zu beliebigen Rändern hinzufügen .
False instances
01
10
111
101
111
1101
1111
1110
1100
1000
0011
01100
11110
01110
00110
011000
011110
001111
True instances
1
01
11
010
111
010
001
011
111
11100
11110
01100
01000
011000
011000
111100
111111
001000