Questa è una continuazione libera della mia precedente sfida sulla costruzione di grafici .
sfondo
Un artista eccentrico ti ha assunto per stimare l'integrità strutturale delle sue sculture. Crea le sue opere d'arte prendendo un gruppo di magneti a forma di cubo e facendoli cadere uno ad uno in una pila enorme. Per analizzare meglio il suo metodo, utilizziamo il seguente modello bidimensionale. Iniziamo con un piano vuoto e rilasciamo un magnete #
su qualsiasi coordinata intera, ad esempio 0
:
|
v
#
===============
0
Se un altro magnete viene lasciato cadere 0
, finisce sopra a quello precedente:
|
v
#
#
===============
0
Ora lasciamo cadere un altro magnete su 0
, e poi uno su 1
:
|
#v
##
#
===============
0
Come visto sopra, un magnete che cade si attacca al secondo magnete che passa (il primo semplicemente lo rallenta). Il secondo magnete non deve essere direttamente sotto il primo e un magnete su entrambi i lati conta comunque come un magnete:
# #
##|##
# v #
### #
# #
===============
0
L'artista vuole che calcoli il massimo spazio verticale nella scultura finale, ovvero il numero massimo di spazi vuoti tra due magneti sulla stessa colonna o un magnete e il terreno sottostante. Nell'immagine sopra, questo numero sarebbe 3 (sulla colonna 2
).
Ingresso
Un elenco di numeri interi, che rappresentano le coordinate in cui l'artista rilascia i suoi magneti, letti da sinistra a destra. Si può presumere che le coordinate soddisfino -1024 <= i < 1024
e che la lunghezza dell'elenco sia al massimo 1024
, se ciò aiuta.
Produzione
Il massimo divario verticale nella scultura finale. La scultura vuota ha spazio -1
, e questo caso deve essere incluso, poiché il nostro scultore è un dadaista.
Regole aggiuntive
Puoi dare una funzione o un programma completo. Vince il conteggio dei byte più corto e le scappatoie standard non sono ammesse. Il codice con spiegazioni è preferito.
Casi test
[] -> -1
[0,2,1] -> 0
[0,0,0,0,0,1,-1] -> 3
[0,0,0,0,0,1,1,1,2] -> 4
[1,1,2,2,2,2,2,2,1] -> 2
[1,1,2,2,2,2,2,2,1,0,1,0] -> 2
[1,2,1,2,1,2,1,2,2,2,2,1,0] -> 3
[-1,-1,-1,1,1,1,0] -> 1
[-1,-1,-1,-1,2,2,1,1,2,2,2,1,0] -> 2
[-2,-2,-2,-1,-1,-1,0,0,0,1,1,1,2,2,2,3,3,4,4,5,5,5,6] -> 6