Considere uma sequência unidimensional de números dentro de um intervalo fixo, ou seja,
[1, 2, 4, 6, 8, 0, 2, 7, 3] in range [0, 10⟩
O gráfico sempre crescente * ** é uma linha que conecta todos os pontos nessa sequência da esquerda para a direita e sempre sobe ou permanece nivelada. Se necessário, a linha passa de cima para baixo e continua subindo de lá para encontrar o próximo ponto.
O objetivo desse desafio é dividir a sequência em diferentes subseqüências que não diminuem, de modo que, quando plotadas em conjunto com um eixo vertical limitado, elas formem um gráfico sempre crescente. Isso é feito adicionando um ponto a ao final de uma subsequência e ao início da próxima, para que o ângulo da linha que cruza o limite superior se alinhe com a linha que cruza o limite inferior e os dois pontos de cruzamento. tem a mesma coordenada horizontal. O exemplo acima daria a seguinte saída:
[1, 2, 4, 6, 8, 10]
[-2, 0, 2, 7, 13]
[-3, 3]
E o gráfico correspondente terá a seguinte aparência: E com o eixo estendido para uma melhor visualização: A saída necessária é uma lista de subsequências que formam as partes do Gráfico cada vez maior. Não é necessário fazer um enredo, mas você ganhará pontos de bônus;). A saída deve separar claramente as subsequências de alguma forma.
Notas
- O intervalo sempre terá zero como o limite esquerdo (inclusive), e o limite direito será algum número inteiro N.
- A sequência nunca conterá valores que não estão dentro do intervalo.
- A primeira subsequência não possui um ponto adicional no início.
- A última subsequência não possui um ponto adicional no final.
- Não é necessário fornecer os índices iniciais que seriam necessários para plotar as subsequências.
Casos de teste
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]
Pontuação
Isso é código-golfe, o código mais curto em bytes vence.
* Não é um jargão real ** Na verdade, deve ser chamado de Gráfico sempre não decrescente, como o @ngm apontou, mas isso parece menos impressionante.