Celem tego wyzwania jest ustalenie, czy zbiór kawałków o jednym wymiarze można kafelkować, tworząc skończoną ciągłą bryłę.
Kawałek jest niepusty, skończony ciąg zer i jedynek, które zaczyna się i kończy o jeden. Niektóre kawałki są możliwe 1
, 101
, 1111
, 1100101
.
Układanie płytek oznacza takie ułożenie elementów, aby powstał jeden ciągły blok. Jeden z jednego kawałka może zajmować miejsce zero, ale nie jednego z drugiego kawałka.
Odpowiednio, jeśli uważamy, że jeden jest „litym materiałem”, a zero jako „dziurą”, elementy powinny pasować tak, aby tworzyły pojedynczy odcinek, nie pozostawiając żadnych otworów.
Aby utworzyć płytki, elementy można przesuwać tylko wzdłuż ich jednowymiarowej przestrzeni. (Nie można ich podzielić ani odzwierciedlić). Każdy element jest używany dokładnie raz.
Przykłady
Te trzy części 101
, 11
, 101
mogą być wyłożone jak pokazano poniżej, w której każdy element jest reprezentowany wymaganym przesunięciem:
101
11
101
więc uzyskane płytki są
111111
Jako drugi przykład, kawałki 11011
i 1001101
nie można kafelkować. W szczególności przesunięcie
11011
1001101
nie jest poprawny, ponieważ zderzają się dwa; i
11011
1001101
nie jest poprawny, ponieważ wynik zawiera zero.
Dodatkowe zasady
Dane wejściowe to zbiór jednego lub więcej elementów. Dowolny rozsądny format jest dozwolony; na przykład:
- Lista ciągów, gdzie każdy ciąg może zawierać dwa różne, spójne znaki;
- Kilka tablic, gdzie każda tablica zawiera pozycje jedności dla kawałka;
- Lista (nieparzystych) liczb całkowitych, takich jak binarna reprezentacja każdej liczby, definiuje kawałek.
Dane wyjściowe powinny mieć wartość zgodną z prawdą, jeśli możliwe jest kafelkowanie, a wartość fałszowania w przeciwnym razie. Wartości wyjściowe nie muszą być spójne; oznacza to, że mogą być różne dla różnych danych wejściowych.
Programy lub funkcje są dozwolone w dowolnym języku programowania . Standardowe luki są zabronione.
Najkrótszy kod w bajtach wygrywa.
Przypadki testowe
Każde wejście jest w innej linii
Prawda
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
Falsy
101
101, 11
1, 1001
1011, 1011
11011, 1001101
1001, 11011, 1000001
1001, 11011, 1000001, 10101
101101
byłyby prawdziwe, nawet jeśli żadna ich skończona liczba nie powoduje ciągłego blokowania.