Considere una secuencia unidimensional de números dentro de un rango fijo, es decir
[1, 2, 4, 6, 8, 0, 2, 7, 3] in range [0, 10⟩
El gráfico cada vez mayor * ** es una línea que conecta todos los puntos de esta secuencia de izquierda a derecha, y siempre sube o se mantiene nivelado. Si es necesario, la línea se envuelve de arriba a abajo y continúa subiendo desde allí para encontrar el siguiente punto.
El objetivo de este desafío es dividir la secuencia en diferentes subsecuencias que no son decrecientes, de modo que cuando se trazan junto con un eje vertical limitado, se formará un gráfico cada vez mayor. Esto se realiza agregando un punto al final de una subsecuencia y al comienzo de la siguiente subsecuencia, de modo que el ángulo de la línea que cruza el límite superior se alinee con la línea que cruza el límite inferior y los dos puntos de cruce tener la misma coordenada horizontal. El ejemplo anterior daría el siguiente resultado:
[1, 2, 4, 6, 8, 10]
[-2, 0, 2, 7, 13]
[-3, 3]
Y el gráfico correspondiente se verá de la siguiente manera: Y con el eje extendido para una mejor vista: La salida requerida es una lista de subsecuencias que forman las partes del Gráfico en constante aumento. No es necesario hacer una trama, pero te dará puntos de bonificación;). La salida debe separar claramente las subsecuencias de alguna manera.
Notas
- El rango siempre tendrá cero como límite izquierdo (inclusive), y el límite derecho será algún número entero N.
- La secuencia nunca contendrá valores que no estén dentro del rango.
- La primera subsecuencia no tiene un punto adicional al principio.
- La última subsecuencia no tiene un punto adicional al final.
- No es necesario proporcionar los índices iniciales que serían necesarios para trazar las subsecuencias.
Casos de prueba
Input: [0, 2, 4, 6, 1, 3, 5, 0], 7
Output: [0, 2, 4, 6, 8], [-1, 1, 3, 5, 7], [-2, 0]
Input: [1, 1, 2, 3, 5, 8, 3, 1], 10
Output: [1, 1, 2, 3, 5, 8, 13],[-2, 3, 11],[-7, 1]
Input: [5, 4, 3, 2, 1], 10
Output: [5, 14],[-5, 4, 13],[-6, 3, 12],[-7, 2, 11],[-8, 1]
Input: [0, 1, 4, 9, 16, 15, 0], 17
Output: [0, 1, 4, 9, 16, 32], [-1, 15, 17], [-2, 0]
Tanteo
Este es el código de golf, gana el código más corto en bytes.
* No es una jerga real ** En realidad debería llamarse Gráfico nunca decreciente, como señaló @ngm, pero eso suena menos impresionante.