In der Bergsteigerterminologie ist ein "14er" jeder Berg mit einer Höhe von 14.000 Fuß oder mehr. Es gibt jedoch einen anderen Unterschied. Damit ein Gipfel als 14er zählt, muss er auch eine "geografische Bekanntheit" von 300 oder mehr Fuß haben. Dies bedeutet, dass Sie, um von einem 14er zum anderen zu gelangen, mindestens 300 Fuß absteigen müssen, bevor Sie wieder aufstehen. Nehmen Sie dieses Beispiel. Zeile 1 zählt als 14 000 Fuß, und jede Zeile zählt als 100 Fuß.
/\__/\
/ \
/ \
Jetzt haben diese beiden Peaks genug Höhe, um zu zählen, aber es gibt nicht genug Höhenunterschiede zwischen ihnen, um als zwei separate Peaks zu zählen. Daher zählt einer von diesen als ein 14er, und der andere ist nur ein "Teilpeak". Hier ist ein Beispiel, in dem die beiden Peaks als zwei separate 14er zählen:
/\ /\
/ \ / \
/ \/ \
/ \
Es kann auch eine teilweise Spitze des Rückgangs zwischen zwei 14ern geben. Hier ist eine leicht modifizierte Version der letzten Bergkette:
/\ /\
/ \/\ / \
/ \/ \
/ \
Diese Bergkette zählt auch als zwei 14er.
Sie müssen ein Programm oder eine Funktion schreiben, die eine Ascii-Art-Darstellung eines Gebirges übernimmt, und zurückgeben, wie viele 14er sich im Bereich befinden. Sie können Eingaben in jedem für Sie am besten geeigneten Format vornehmen, sei es ein 2D-Array von Zeichen, eine Zeichenfolge mit Zeilenumbruch oder eine Zeichenfolge mit einem anderen Trennzeichen. Sie können davon ausgehen, dass alle Eingaben nur die Zeichen enthalten /\_
und dass die Länge jeder Zeile gleich ist (einschließlich Leerzeichen am Ende). Sie können auch davon ausgehen, dass die Bergkette in der linken unteren Ecke mit einem /
oder einem beginnt _
.
Befindet sich der letzte Abschnitt eines Berges nicht in der untersten Zeile, können Sie davon ausgehen, dass der Berg erst danach abnimmt, z
/
/
/
Zählt als einzelner 14er.
Sie müssen nicht mit ungültigen Gebirgszügen umgehen.
Hier ist ein Beispiel für I / O:
/\___/\_
/ \ /\
/ \ / \
_/\/ \/ \
/ \
/ \
/ \_
2
/\ /\
/\ / \ /
/\ / \ / \/
/ \ / \ /
/ \/ \/
4
/\
_/\__/ \
/ \
1
/\
/ \ /\
/ \_/ \
/ \
/ \
/ \
/ \
1
/\
/\_/\ / \_
/ \ / \ /\
/ \/ \ /
/ \_/
/
3
_
Punkt 100 Fuß niedriger ist als ein Schrägstrich in derselben Zeile. Zumindest schlägt das Ihr letzter Testfall vor./ / / _ \ \ \
? Außerdem nehme ich an, dass der höchste Punkt in der Eingabe immer als Peak gezählt werden sollte, dies ist jedoch nicht explizit angegeben. man könnte an einem niedrigeren Gipfel beginnen und mit einer anderen Zählung enden.Antworten:
JavaScript (ES6), 133 Byte
Erläuterung
Da die Spezifikationen nicht eindeutig angegeben sind, werden einige Annahmen getroffen:
Durchläuft das Zeichen
c
jeder Spalte (insbesondere durchläuft es jede Spalte, bis ein Zeichen gefunden wird). Die aktuelle Höhe wird in gespeicherta
. Es wird auf ein Minimum von0
und ein Maximum von geklemmt3
. Die Richtung, die zum Zählen des nächsten Peaks benötigt wird, wird ind
(false
= auf,true
= ab) gespeichert . Wenna
Reach3
und Reachd
istfalse
, wird die Anzahl der Peaksp
inkrementiert undd
auftrue
(down) gesetzt. Sobalda
erreicht0
,d
wird wieder auffalse
(auf) gesetzt.quelle
C 174 Bytes
Benötigt eine abschließende Newline in der Eingabe, sonst +4 Bytes.
quelle
JavaScript (ES6), 154 Byte
Wobei
\n
das wörtliche Zeilenumbruchzeichen darstellt. Ungolfed:quelle