Mi pequeño niño tiene un juguete como este:
Este juguete consta de 10 pequeños cubos apilables, que vamos a numerar de 1 (el más pequeño) a 10 (el más grande). A veces hace pequeños montones y el juguete termina así:
Podemos representar esquemáticamente las pilas como esta:
1 6
4 9 2 7
5 10 3 8
---------- <-- Floor
1 2 3 4 <-- Pile #
O, dicho de otra manera:
[[4,5],[9,10],[1,2,3],[6,7,8]]
Este conjunto de pilas de cubos se puede volver a apilar fácilmente para reconstruir el conjunto original (la primera imagen) simplemente colocando pilas consecutivas de cubos más pequeños dentro de pilas de cubos más grandes:
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
Sin embargo, a veces mi hijo intenta construir torres o tira cubos, y las pilas terminan siendo inconsistentes y el conjunto original no se puede reconstruir simplemente colocando una pila dentro de otra. Ejemplos de esto:
[[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)
Reto
Dada una lista de listas de enteros que representan un conjunto de pilas de cubetas, devuelve un valor verdadero si las listas representan un conjunto de pilas fácilmente re-apilables, o falsey en cualquier otro caso.
- La entrada se dará como una lista de listas de enteros, que representan los cubos de arriba a abajo para cada pila.
- No habrá pilas de inicio vacías (no obtendrá
[[1,2,3],[],[4,5]]como entrada). - El número total de cubos puede ser cualquiera dentro de un rango entero razonable.
- Mi hijo solo tiene un conjunto de cubos, por lo que no habrá elementos duplicados.
- Puede seleccionar dos valores consistentes (y coherentes) para verdadero o falso.
- Los cubos se etiquetarán del # 1 al #N, siendo
Nel número entero más grande en las listas de enteros. Mi hijo todavía no conoce el concepto de cero. - Puede recibir la entrada en cualquier formato razonable siempre que represente un conjunto de pilas de cubos. Solo especifíquelo en su respuesta si cambia la forma en que recibe la entrada.
- Este es el código de golf , ¡así que puede ganar el programa / función más corto para cada idioma!
Ejemplos
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)

