Stellen Sie sich vor, wir erhalten einen Ausschnitt aus einer Bergregion. Dies würde eine ähnliche Form ergeben:
4 _
3 _ _ __/ \
2 / \__/ \ _/ \_ /
1 / \ / \_/
0 \/
12322223210012233343221112
Wie wir sehen können, können wir dies (bis zu einem gewissen Grad) mit einer Folge von ganzen Zahlen darstellen.
Für diese Herausforderung definieren wir ein Tal als eine zusammenhängende Folge, in der die Werte anfänglich abnehmen und ab einem bestimmten Punkt zunehmen. Formal für eine Folge ein Tal Indizes für die gilt:
- Start- und Endpunkt des Tals sind gleich:
- Das Tal beginnt und endet, sobald die Region niedriger wird:
- das tal ist nicht flach:
- das Tal nimmt anfangs ab:
- das Tal wird sich irgendwann erhöhen:
Nun definieren wir die Breite eines solchen Tals als die Größe der Indizes , dh. t-s + 1 .
Herausforderung
Bei einem vorgegebenen Höhenprofil (Folge nicht negativer Ganzzahlen) besteht Ihre Aufgabe darin, die Breite des breitesten Tals zu bestimmen.
Beispiel
Aufgrund des Höhenprofils [1,2,3,2,2,2,2,3,2,1,0,0,1,2,2,3,3,3,4,3,2,2,1,1,1,2]
können wir es wie bisher visualisieren:
4 _
3 _ _ __/ \
2 / \__/ \ _/ \_ /
1 / \ / \_/
0 \/
12322223210012233343221112
aaaaaa ccccc
bbbbbbbbb
Beachten Sie, dass sich das zweite Tal [3,2,1,0,0,1,2,2,3]
nicht weiter nach rechts erstreckt, da der am weitesten links liegende Punkt und nicht . Außerdem addieren wir die verbleibenden zwei s nicht, da der Endpunkt höher als der vorletzte Punkt sein muss.
Daher beträgt die Breite des breitesten Tals .
Regeln
- Die Eingabe besteht aus einer Folge nicht negativer Ganzzahlen (entschuldige Holländer)
- man kann davon ausgehen, dass es immer mindestens ein tal gibt
- Die Ausgabe hat die oben definierte Größe des breitesten Tals
Testfälle
[4,0,4] -> 3
[1,0,1,0,1] -> 3
[1,0,2,0,1,2] -> 4
[13,13,13,2,2,1,0,1,14,2,13,14] -> 4
[1,2,3,2,2,2,2,3,2,1,0,0,1,2,2,3,3,3,4,3,2,2,1,1,1,2] -> 9
[3,2,0,1,0,0,1,3] -> 4
[3,2,0,1,0,0,1,3]
. Alle aktuellen Antworten geben 8 zurück.[3,1,2,3]
)[4,0,4]
wäre so ein Fall.Antworten:
Gelee , 15 Bytes
Probieren Sie es online!
Oder sehen Sie sich eine Testsuite an (fügen Sie zwei weitere Testfälle hinzu, die ich zuvor nicht erfüllt habe).
Wie?
quelle
JavaScript (ES6),
1111089997 ByteProbieren Sie es online!
Kommentiert
quelle
Python 2 ,
120115898786152149 BytesProbieren Sie es online!
quelle
Retina 0.8.2 , 77 Bytes
Probieren Sie es online! Link enthält Testfälle. Erläuterung:
In Unary konvertieren.
Listen Sie Übereinstimmungen auf, anstatt sie zu zählen.
Der Talanfang wird erfasst
\1
. Dies muss dann erst zum Schluss wieder passen. Da wir das Komma nicht erfassen, wird auch verhindert, dass höhere Werte übereinstimmen.Passen Sie die abnehmenden Werte an. Das
(?!1+\2)
verhindert , dass die jeden Durchlauf durch die Schleife aus größer ist als die vorherige. (Der erste Durchgang\2
ist nicht festgelegt, sodass er nicht trivial übereinstimmt.) Die Erfassung enthält das nachgestellte Komma, da dies Golfspieler sind.Passen Sie die ansteigenden Werte an. Diese Zeit
((?3)\3|\2)
bedeutet, dass jede Übereinstimmung mindestens so lang sein muss wie der vorherige Wert oder die letzte abnehmende Erfassung beim ersten Durchlauf der Schleife.Schließlich muss das Talende die gleiche Höhe wie der Start haben.
Löschen Sie die Höhen und lassen Sie die Kommas. (Dies ist etwas einfacher als das Zählen der Höhen, da einige von ihnen Null sein könnten.)
In umgekehrter Reihenfolge sortieren, dh die meisten Kommas zuerst.
Zählen Sie die Anzahl der Kommas in der ersten Zeile plus eins.
quelle
Schale , 13 Bytes
Probieren Sie es online!
Erläuterung
Ich benutze einen ähnlichen Algorithmus wie Jonathan Allan .
quelle
Japt , 31 Bytes
Probieren Sie es online!
Sparte 10 Bytes, indem du dich von Zgarbs Antwort auf "Husk" inspirieren ließest. Ich denke immer noch, dass dies verbessert werden kann, aber ich habe es noch nicht gefunden.
Erläuterung:
quelle