Der Zweck dieser Herausforderung besteht darin, festzustellen, ob eine Sammlung von eindimensonalen Stücken gekachelt werden kann, um einen endlichen kontinuierlichen Block zu bilden.
Ein Stück ist eine nicht leere, endliche Folge von Nullen und Einsen, die mit einer Eins beginnt und endet. Einige mögliche Stücke sind 1
, 101
, 1111
, 1100101
.
Kacheln bedeutet, die Teile so anzuordnen, dass ein einzelner zusammenhängender Einsenblock entsteht. Eine Eins aus einem Stück kann die Stelle einer Null, aber nicht einer Eins aus einem anderen Stück einnehmen.
Wenn wir eine Eins als "festes Material" und eine Null als "Loch" betrachten, sollten die Teile so passen, dass sie eine einzelne Strecke bilden, ohne Löcher zu hinterlassen.
Um eine Kachelung zu bilden, können Teile nur entlang ihres eindimensionalen Raums verschoben werden. (Sie können nicht geteilt oder reflektiert werden). Jedes Stück wird genau einmal verwendet.
Beispiele
Die drei Stücke 101
, 11
, 101
können gefliest werden , wie im Folgenden gezeigt, wobei jedes Stück mit der erforderlichen Verschiebung dargestellt wird:
101
11
101
so ist die erhaltene Kachelung
111111
Als zweites Beispiel können die Stücke 11011
und 1001101
nicht gekachelt werden. Insbesondere die Verschiebung
11011
1001101
ist nicht gültig, weil zwei kollidieren; und
11011
1001101
ist nicht gültig, da das Ergebnis eine Null enthalten würde.
Zusätzliche Regeln
Die Eingabe ist eine Sammlung von einem oder mehreren Stücken. Jedes vernünftige Format ist zulässig. beispielsweise:
- Eine Liste von Zeichenfolgen, wobei jede Zeichenfolge zwei verschiedene, konsistente Zeichen enthalten kann.
- Mehrere Arrays, wobei jedes Array die Positionen von Einsen für ein Stück enthält;
- Eine Liste von (ungeraden) ganzen Zahlen wie die binäre Darstellung jeder Zahl definiert ein Stück.
Die Ausgabe sollte ein wahrer Wert sein, wenn eine Kachelung möglich ist, und ein falscher Wert, wenn keine Kachelung möglich ist. Ausgabewerte müssen nicht konsistent sein; Das heißt, sie können für verschiedene Eingaben unterschiedlich sein.
Programme oder Funktionen sind in jeder Programmiersprache zulässig . Standardlücken sind verboten.
Kürzester Code in Bytes gewinnt.
Testfälle
Jeder Eingang befindet sich in einer anderen Zeile
Wahrheit
1
111
1, 1
11, 111, 1111
101, 11, 1
101, 11, 101
10001, 11001, 10001
100001, 1001, 1011
10010001, 1001, 1001, 101
10110101, 11001, 100001, 1
110111, 100001, 11, 101
1001101, 110111, 1, 11, 1
Falsch
101
101, 11
1, 1001
1011, 1011
11011, 1001101
1001, 11011, 1000001
1001, 11011, 1000001, 10101
quelle
101101
wären solche Dinge wahr, obwohl keine endliche Anzahl von ihnen zu einem zusammenhängenden Block führt.Antworten:
Gelee , 15 Bytes
Nimmt eine Liste von Indizes und gibt eine positive Ganzzahl (wahr) oder 0 (falsch) zurück.
Probieren Sie es online! oder überprüfen Sie die meisten Testfälle .
quelle
JavaScript (ES6),
747370 ByteÜbernimmt die Eingabe als Array von 32-Bit-Ganzzahlen. Gibt einen Booleschen Wert zurück.
Oder 66 Bytes mit invertierten Wahrheits- / Falschwerten:
Testfälle
Code-Snippet anzeigen
Wie?
quelle
Schale , 16 Bytes
Nimmt eine Liste von Listen mit 1-basierten Indizes auf. Probieren Sie es online!
Erläuterung
quelle
Gelee , 16 Bytes
Ein monadischer Link, der eine Liste mit Einsen und Nullen erstellt, die entweder
1
(wahr) oder0
(falsch) zurückgeben.Probieren Sie es online! oder sehen Sie sich eine Testsuite an (verkürzt - die ersten 6 Falschen, gefolgt von den ersten acht Wahrheiten, da die Länge der vier zu lang ist, um sie aufgrund der Verwendung des kartesischen Produkts einzuschließen).
Wie?
quelle
Python 2 , 159 Bytes
Probieren Sie es online!
quelle
Gelee , 16 Bytes
Probieren Sie es online!
-1 Byte danke an Herrn Xcoder
Ich habe das völlig unabhängig von Jonathan Allan entwickelt, aber jetzt ist es genau dasselbe, wenn ich es mir ansehe:
quelle
J , 74 Bytes
Ich könnte versuchen, es später stillschweigend zu machen, aber im Moment ist es ein explizites Verb. Ich werde die ungolfed Version erklären. Es nimmt eine Liste von Ganzzahlen in
1
Kästchen und gibt (wahr) oder0
(falsch) zurück.Probieren Sie es online!
quelle