Esta es una continuación floja de mi desafío anterior sobre la construcción de gráficos .
Antecedentes
Un artista excéntrico te ha contratado para estimar la integridad estructural de sus esculturas. Él crea sus obras de arte tomando un montón de imanes en forma de cubo y colocándolos uno por uno en una enorme pila. Para analizar mejor su método, utilizamos el siguiente modelo bidimensional. Comenzamos con un piso vacío y colocamos un imán #
en cualquier coordenada entera, digamos 0
:
|
v
#
===============
0
Si se deja caer otro imán 0
, termina encima del anterior:
|
v
#
#
===============
0
Ahora, dejemos caer un imán más en 0
, y luego uno en 1
:
|
#v
##
#
===============
0
Como se ve arriba, un imán que cae se pega al segundo imán que pasa (el primero simplemente lo ralentiza). El segundo imán no necesita estar directamente debajo del primero, y un imán en ambos lados todavía cuenta como un imán:
# #
##|##
# v #
### #
# #
===============
0
Los artistas quieren que calcules el espacio vertical máximo en la escultura final, es decir, el número máximo de espacios vacíos entre dos imanes en la misma columna, o un imán y el suelo debajo de él. En la imagen de arriba, este número sería 3 (en la columna 2
).
Entrada
Una lista de enteros, que representan las coordenadas donde el artista deja caer sus imanes, leídos de izquierda a derecha. Puede suponer que las coordenadas satisfacen -1024 <= i < 1024
y que la longitud de la lista es como máximo 1024
, si eso ayuda.
Salida
La brecha vertical máxima en la escultura final. La escultura vacía tiene un hueco -1
, y este caso tiene que ser incluido, ya que nuestro escultor es dadaísta.
Reglas adicionales
Puede dar una función o un programa completo. El conteo de bytes más corto gana, y las lagunas estándar no se permiten. Se prefiere el código con explicaciones.
Casos de prueba
[] -> -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