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
101101
wären solche Dinge wahr, obwohl keine endliche Anzahl von ihnen zu einem zusammenhängenden Block führt.