Gracias a la comunidad PPCG, Santa logró ordenar sus regalos en el orden correcto para mudarse al muelle de transporte. ¡Desafortunadamente, las señales del muelle de transporte están rotas, por lo que no sabe dónde poner todos los regalos! Los regalos están todos agrupados y no por sus gamas, lo que Santa admite que habría sido una mejor idea.
Ahora, dados los presentes en el orden ordenado, determine todas las configuraciones posibles de rango mínimo que resulten en el presente en el orden correcto. Es decir, encuentre todas las configuraciones de rango mínimo de tal manera que ordenar los regalos de acuerdo con el algoritmo en el Desafío # 5 no cambie el orden.
Desafío
Una configuración de rango mínimo es una lista de rangos de modo que los rangos sean lo más pequeños posible. Es decir, si un rango está designado para cubrir un subconjunto específico de regalos, entonces el mínimo y el máximo del rango deben ser los mismos que los del subconjunto. En otras palabras, reducir cualquier rango en la cubierta haría que ya no sea una cubierta.
El desafío es encontrar todas las configuraciones de rango mínimo posibles que se apliquen a los tamaños actuales. Tomemos un ejemplo:[3, 1, 2, 5, 4, 7, 6]
Hay un caso trivial, que consiste en tomar el rango de toda la configuración actual. En este caso, [[1, 7]]
sería una solución.
Para ejemplos con elementos únicos, sería otro caso trivial [[3], [1], [2], [5], [4], [7], [6]]
(porque no es necesario ordenar los rangos).
Para este ejemplo, también vemos eso [[1, 3], [4, 7]]
y [[1, 3], [4, 5], [6, 7]]
funcionaría, así como [[1, 3], [5], [4], [6, 7]]
y [[1, 3], [4, 5], [7], [6]]
.
La respuesta final para [3, 1, 2, 5, 4, 7, 6]
sería [[[3], [1], [2], [5], [4], [7], [6]], [[3], [1], [2], [5], [4], [6, 7]], [[3], [1], [2], [4, 5], [7], [6]], [[3], [1], [2], [4, 5], [6, 7]], [[3], [1], [2], [4, 7]], [[3], [1, 2], [5], [4], [7], [6]], [[3], [1, 2], [5], [4], [6, 7]], [[3], [1, 2], [4, 5], [7], [6]], [[3], [1, 2], [4, 5], [6, 7]], [[3], [1, 2], [4, 7]], [[1, 3], [5], [4], [7], [6]], [[1, 3], [5], [4], [6, 7]], [[1, 3], [4, 5], [7], [6]], [[1, 3], [4, 5], [6, 7]], [[1, 3], [4, 7]], [[1, 5], [7], [6]], [[1, 5], [6, 7]], [[1, 7]]]
.
Especificaciones de formato
La entrada se proporcionará como una lista plana de enteros positivos dentro del rango de números admitido razonable de su idioma en cualquier formato razonable. La entrada puede contener elementos duplicados. La salida debe darse como una lista 3D de enteros positivos en cualquier formato razonable.
Cada rango en su salida (que está en la segunda capa) se puede representar como [min, max]
, [num]
si es un rango de valor único, o como el rango completo en sí, pero su formato de salida debe ser consistente. Especifique si desea utilizar un formato de salida razonable ligeramente diferente.
Los valores duplicados deben estar cubiertos por un único rango en la salida; es decir, no hay dos rangos en la salida que puedan tener superposición.
Su solución puede devolver los rangos en cualquier orden y esto no tiene que ser determinista.
Reglas
- Se aplican lagunas estándar
- Este es el código de golf, por lo que gana la respuesta más corta en bytes
- No se aceptarán respuestas.
Caso de prueba para una lista con elementos duplicados:
2 3 2 4 -> [[[2, 3], [4]], [[2, 4]]]
Implementación de referencia
El encabezado es el enlace.
Nota: Me inspiré para esta serie de desafíos de Advent Of Code . No estoy afiliado a este sitio
Puede ver una lista de todos los desafíos de la serie mirando la sección 'Vinculados' del primer desafío aquí .
¡Feliz golf!