W terminologii alpinistycznej „14er” oznacza dowolną górę o wysokości co najmniej 14 000 stóp. Istnieje jednak inne rozróżnienie. Aby szczyt mógł być liczony jako 14er, musi również mieć „ekspozycję geograficzną” wynoszącą 300 stóp lub więcej. Oznacza to, że aby przejść z jednego 14er do drugiego, musisz najpierw zejść co najmniej 300 stóp, zanim ponownie wstaniesz . Weź ten przykład. Linia 1 liczy się jako 14 000 stóp, a każda linia liczy się jako 100 stóp.
/\__/\
/ \
/ \
Teraz oba te szczyty mają wystarczającą wysokość, aby liczyć, ale nie ma wystarczającego spadku wysokości między nimi, aby liczyć się jako dwa osobne szczyty. Dlatego jeden z nich liczy się jako 14er, a drugi jest tylko „częściowym pikiem”. Oto przykład, w którym dwa szczyty liczą się jako dwa oddzielne 14er:
/\ /\
/ \ / \
/ \/ \
/ \
Może również wystąpić częściowy szczyt spadku między dwoma czternastolatkami. Oto nieco zmodyfikowana wersja ostatniego pasma górskiego:
/\ /\
/ \/\ / \
/ \/ \
/ \
Ten łańcuch górski liczy się również jako dwa 14-osobowe.
Musisz napisać program lub funkcję, która przyjmuje ascii-artystyczną reprezentację pasma górskiego, i zwrócić, ile 14er jest w zasięgu. Możesz wprowadzać dane w dowolnym formacie, który jest dla ciebie najwygodniejszy, czy to tablica znaków 2D, ciąg znaków z nową linią, czy ciąg znaków z innym ogranicznikiem. Możesz założyć, że wszystkie dane wejściowe będą zawierały tylko znaki /\_
i że długość każdego wiersza będzie taka sama (w tym końcowe spacje). Możesz także założyć, że pasmo górskie zaczyna się w lewym dolnym rogu literą a /
lub a _
.
Jeśli ostatni odcinek góry nie znajduje się na dolnej linii, możesz założyć, że góra następnie maleje, np
/
/
/
Liczy się jako pojedynczy 14er.
Nie musisz obsługiwać nieprawidłowych pasm górskich.
Oto kilka przykładowych operacji we / wy:
/\___/\_
/ \ /\
/ \ / \
_/\/ \/ \
/ \
/ \
/ \_
2
/\ /\
/\ / \ /
/\ / \ / \/
/ \ / \ /
/ \/ \/
4
/\
_/\__/ \
/ \
1
/\
/ \ /\
/ \_/ \
/ \
/ \
/ \
/ \
1
/\
/\_/\ / \_
/ \ / \ /\
/ \/ \ /
/ \_/
/
3
_
liczy się 100 stóp niżej niż cięcie na tej samej linii. Przynajmniej tak sugeruje twój ostatni przypadek testowy./ / / _ \ \ \
? Przypuszczam również, że najwyższy punkt na wejściu powinien być zawsze liczony jako szczyt, ale nie jest to wyraźnie określone; można zacząć od niższego szczytu i skończyć z inną liczbą.Odpowiedzi:
JavaScript (ES6), 133 bajty
Wyjaśnienie
Ponieważ specyfikacje nie są jasno określone, czyni to kilka założeń:
Iteruje po znaku
c
każdej kolumny (w szczególności iteruje każdą kolumnę, aż znajdzie znak). Aktualna wysokość jest zapisana wa
. Jest ograniczony do minimum0
i maksimum3
. Kierunek potrzebny do przejścia do zliczenia następnego piku jest zapisany wd
(false
= w górę,true
= w dół). Jeślia
osiągnie3
id
jestfalse
, liczba pikówp
jest zwiększana id
jest ustawiana natrue
(w dół). Poa
biegu0
,d
to zestaw z powrotemfalse
(w górę).źródło
C 174 bajtów
Wymaga wejścia nowego wiersza na wejściu, w przeciwnym razie +4 bajty.
źródło
JavaScript (ES6), 154 bajty
Gdzie
\n
reprezentuje dosłowny znak nowej linii. Nie golfowany:źródło