Il mio bambino ha un giocattolo come questo:
Questo giocattolo è composto da 10 secchielli impilabili, che numereremo da 1 (il più piccolo) a 10 (il più grande). A volte fa piccole pile e il giocattolo finisce così:
Possiamo rappresentare schematicamente le pile in questo modo:
1 6
4 9 2 7
5 10 3 8
---------- <-- Floor
1 2 3 4 <-- Pile #
Oppure, in altre parole:
[[4,5],[9,10],[1,2,3],[6,7,8]]
Questo set di pile a secchiello è facilmente ripristinabile per ricostruire il set originale (la prima immagine) semplicemente posizionando consecutivamente pile di secchi più piccoli all'interno di pile di secchi più grandi:
1 1 6
2 2 7
1 6 3 6 3 8
4 9 2 7 4 9 7 4 9
5 10 3 8 5 10 8 5 10
---------- > [Pile 3 to 1] > ---------- > [Pile 4 to 2] > ---------- > [Pile 1 to 2] > Done!
1 2 3 4 1 2 3 4 1 2 3 4
Tuttavia, a volte mio figlio cerca di costruire torri o getta secchi, e le pile finiscono per essere incoerenti e il set originale non può essere ricostruito semplicemente posizionando una pila all'interno di un'altra. Esempi di questo:
[[1,3,2],[4]] (the kid tried to build a tower by placing a bigger bucket
over a smaller one, we would need to reorder the buckets
first)
[[1,3,4],[2]] (the kid left aside an unordered bucket, we would need to remove
bucket #1 from pile #1 before restacking)
[[1,2,3],[5]] (the kid lost a bucket, we need to find it first)
Sfida
Dato un elenco di elenchi di numeri interi che rappresentano un set di pile bucket, restituisce un valore di verità se gli elenchi rappresentano un set di pile facilmente ripristinabili o false in ogni altro caso.
- L'input verrà fornito come un elenco di elenchi di numeri interi, che rappresentano i bucket dall'alto verso il basso per ogni stack.
- Non ci saranno pile iniziali vuote (non otterrai
[[1,2,3],[],[4,5]]
come input). - Il numero totale di bucket può essere qualsiasi all'interno di un intervallo intero ragionevole.
- Mio figlio ha solo un set di secchi, quindi non ci saranno elementi duplicati.
- È possibile selezionare due valori coerenti (e coerenti) per verità o falsità.
- I bucket verranno etichettati da # 1 a #N, essendo
N
il numero intero più grande negli elenchi di numeri interi. Mio figlio non conosce ancora il concetto di zero. - È possibile ricevere l'input in qualsiasi formato ragionevole purché rappresenti una serie di pile di secchi. Basta specificarlo nella risposta se si cambia il modo in cui si riceve l'input.
- Questo è il codice-golf , così possa il programma / funzione di breve per ogni vittoria la lingua!
Esempi
Input: [[4,5],[9,10],[1,2,3],[6,7,8]]
Output: Truthy
Input: [[6,7,8,9,10],[1],[2],[3,4,5],[11,12,13]]
Output: Truthy
Input: [[2,3,4],[1],[5,6,7]]
Output: Truthy
Input: [[1,2],[5,6],[7,8,9]]
Output: Falsey (buckets #3 and #4 are missing)
Input: [[2,3,4],[5,6,7]]
Output: Falsey (bucket #1 is missing)
Input: [[1,3,4],[5,7],[2,6]]
Output: Falsey (non-restackable piles)
Input: [[1,4,3],[2],[5,6]]
Output: Falsey (one of the piles is a tower)