Dies ist eine lose Fortsetzung meiner früheren Herausforderung beim Erstellen von Diagrammen .
Hintergrund
Ein exzentrischer Künstler hat Sie beauftragt, die strukturelle Integrität seiner Skulpturen einzuschätzen. Er erschafft seine Kunstwerke, indem er ein paar würfelförmige Magnete eins nach dem anderen auf einen riesigen Stapel wirft. Um seine Methode besser analysieren zu können, verwenden wir das folgende zweidimensionale Modell. Wir beginnen mit einem leeren Boden und lassen einen Magneten #
an einer beliebigen Ganzzahlkoordinate fallen, sagen wir 0
:
|
v
#
===============
0
Wenn ein anderer Magnet fallen gelassen wird 0
, landet er oben auf dem vorherigen:
|
v
#
#
===============
0
Lassen Sie uns noch einen Magneten auf 0
und dann einen auf fallen 1
:
|
#v
##
#
===============
0
Wie oben zu sehen, haftet ein fallender Magnet am zweiten Magneten, den er passiert (der erste verlangsamt ihn lediglich). Der zweite Magnet muss nicht direkt unter dem ersten liegen, und ein Magnet auf beiden Seiten zählt immer noch als ein Magnet:
# #
##|##
# v #
### #
# #
===============
0
Der Künstler möchte, dass Sie die maximale vertikale Lücke in der endgültigen Skulptur berechnen, dh die maximale Anzahl von Leerstellen zwischen zwei Magneten auf derselben Säule oder einem Magneten und dem Boden darunter. Im obigen Bild wäre diese Zahl 3 (in der Spalte 2
).
Eingang
Eine Liste von Ganzzahlen, die die Koordinaten darstellen, bei denen der Künstler seine Magnete fallen lässt, wird von links nach rechts gelesen. Sie können davon ausgehen, dass die Koordinaten übereinstimmen -1024 <= i < 1024
und dass die Länge der Liste maximal ist 1024
, wenn dies hilft.
Ausgabe
Die maximale vertikale Lücke in der endgültigen Skulptur. Die leere Skulptur hat eine Lücke -1
, und dieser Fall muss eingeschlossen werden, da unser Bildhauer ein Dadaist ist.
Zusätzliche Regeln
Sie können eine Funktion oder ein vollständiges Programm angeben. Die kürzeste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig. Code mit Erläuterungen wird bevorzugt.
Testfälle
[] -> -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