Lo scopo di questa sfida è determinare se una collezione di pezzi monodimensionali può essere piastrellata per formare un pezzo continuo finito.
Un pezzo è una sequenza finita non vuota di zeri e quelli che iniziano e finiscono con uno. Alcuni pezzi sono possibili 1
, 101
, 1111
, 1100101
.
Piastrellare significa disporre i pezzi in modo da formare un singolo blocco contiguo di quelli. Uno da un pezzo può occupare il posto di uno zero, ma non di uno, da un altro pezzo.
Allo stesso modo, se consideriamo uno come "materiale solido" e uno zero come un "foro", i pezzi dovrebbero adattarsi in modo da formare un singolo tratto, senza lasciare alcun foro.
Per formare una piastrellatura, i pezzi possono essere spostati solo lungo il loro spazio unidimensionale. (Non possono essere divisi o riflessi). Ogni pezzo viene usato esattamente una volta.
Esempi
I tre pezzi 101
, 11
, 101
possono essere affiancate come illustrato nel seguito, in cui ogni pezzo è rappresentato con lo spostamento richiesto:
101
11
101
quindi la piastrellatura ottenuta è
111111
Come secondo esempio, i pezzi 11011
e 1001101
non possono essere piastrellati. In particolare, il turno
11011
1001101
non è valido perché ce ne sono due che si scontrano; e
11011
1001101
non è valido perché il risultato conterrebbe uno zero.
Regole aggiuntive
L' input è una raccolta di uno o più pezzi. È consentito qualsiasi formato ragionevole; per esempio:
- Un elenco di stringhe, in cui ogni stringa può contenere due caratteri diversi e coerenti;
- Diversi array, in cui ogni array contiene le posizioni di quelli per un pezzo;
- Un elenco di numeri interi (dispari) come la rappresentazione binaria di ciascun numero definisce un pezzo.
L' output dovrebbe essere un valore veritiero se è possibile una piastrellatura e un valore errato in caso contrario. I valori di output non devono essere coerenti; cioè, possono essere diversi per input diversi.
Programmi o funzioni sono consentiti, in qualsiasi linguaggio di programmazione . Sono vietate le scappatoie standard .
Vince il codice più breve in byte.
Casi test
Ogni input è su una riga diversa
Truthy
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
sarebbero veritiere, anche se nessun numero finito di esse risulta in un blocco contiguo.