Il s'agit d'une continuation lâche de mon défi précédent sur la construction de graphiques .
Contexte
Un artiste excentrique vous a engagé pour estimer l'intégrité structurelle de ses sculptures. Il crée ses œuvres d'art en prenant un tas d'aimants en forme de cube et en les déposant un par un dans un énorme tas. Pour mieux analyser sa méthode, nous utilisons le modèle bidimensionnel suivant. Nous commençons avec un sol vide et déposons un aimant #
à n'importe quelle coordonnée entière, disons 0
:
|
v
#
===============
0
Si un autre aimant tombe 0
, il se retrouve au-dessus du précédent:
|
v
#
#
===============
0
Maintenant, laissons tomber un aimant de plus à 0
, puis un à 1
:
|
#v
##
#
===============
0
Comme vu ci-dessus, un aimant qui tombe colle au deuxième aimant qu'il passe (le premier le ralentit simplement). Le deuxième aimant n'a pas besoin d'être directement en dessous du premier, et un aimant des deux côtés compte toujours comme un aimant:
# #
##|##
# v #
### #
# #
===============
0
Les artistes veulent que vous calculiez l'écart vertical maximal dans la sculpture finale, c'est-à-dire le nombre maximal d'espaces vides entre deux aimants sur la même colonne, ou un aimant et le sol en dessous. Dans l'image ci-dessus, ce nombre serait 3 (sur la colonne 2
).
Contribution
Une liste d'entiers, représentant les coordonnées où l'artiste laisse tomber ses aimants, lue de gauche à droite. Vous pouvez supposer que les coordonnées satisfont -1024 <= i < 1024
et que la longueur de la liste est au maximum 1024
, si cela vous aide.
Production
L'écart vertical maximal dans la sculpture finale. La sculpture vide a un écart -1
, et ce cas doit être inclus, car notre sculpteur est un dadaïste.
Règles supplémentaires
Vous pouvez donner une fonction ou un programme complet. Le nombre d'octets le plus court l'emporte et les failles standard sont interdites. Un code avec des explications est préférable.
Cas de 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