Considera una sequenza unidimensionale di numeri all'interno di un intervallo fisso, ad es
[1, 2, 4, 6, 8, 0, 2, 7, 3] in range [0, 10⟩
Il grafico in costante aumento * ** è una linea che collega tutti i punti di questa sequenza da sinistra a destra e sale sempre verso l'alto o rimane in piano. Se necessario, la linea si avvolge dall'alto verso il basso e continua a salire da lì per incontrare il punto successivo.
L'obiettivo di questa sfida è quello di dividere la sequenza in diverse sottosequenze che non sono tutte in diminuzione, in modo che quando vengono tracciate insieme con un asse verticale limitato formeranno un grafico in costante aumento. Questo viene fatto aggiungendo un punto alla fine di una sottosequenza e all'inizio della sottosequenza successiva, in modo che l'angolo della linea che attraversa il limite superiore sia allineato con la linea che attraversa il limite inferiore e i due punti di attraversamento hanno le stesse coordinate orizzontali. L'esempio sopra darebbe il seguente output:
[1, 2, 4, 6, 8, 10]
[-2, 0, 2, 7, 13]
[-3, 3]
E il grafico corrispondente apparirà come segue: E con l'asse esteso per una visione migliore: L'output richiesto è un elenco di sottosequenze che formano le parti del grafico in costante aumento. Fare una trama non è richiesto ma ti farà guadagnare punti bonus;). L'output deve separare chiaramente le sottosequenze in qualche modo.
Gli appunti
- L'intervallo avrà sempre zero come limite sinistro (inclusivo) e il limite destro sarà un numero intero N.
- La sequenza non conterrà mai valori che non rientrano nell'intervallo.
- La prima sottosequenza non ha un punto aggiuntivo all'inizio.
- L'ultima sottosequenza non ha un punto aggiuntivo alla fine.
- Non è necessario fornire gli indici di partenza necessari per tracciare le sottosequenze.
Casi test
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]
punteggio
Questo è code-golf, vince il codice più breve in byte.
* Gergo non reale ** In realtà dovrebbe essere chiamato grafico mai decrescente, come ha sottolineato @ngm, ma sembra meno impressionante.