Listę liczb całkowitych dodatnich można zwizualizować jako kwantowane pasmo górskie, gdzie każda pozycja listy reprezentuje wysokość jednego pionowego odcinka gór.
Na przykład lista
1, 2, 2, 3, 4, 3, 5, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 3
może stać się zasięgiem
x
x x
xxxxx xxx x
xxxxxxxx xxxxxx x
xxxxxxxxxxxxxxxxxx
(Mniej poetyccy ludzie mogą nazwać to wykresem słupkowym, ale ja dygresję).
Pytanie w tym wyzwaniu brzmi: ile szczytów znajduje się w górach na dowolnej liście? Zasadniczo ile lokalnych maksimów znajduje się na liście?
Szczyt jest zdefiniowany jako ciągły odcinek jednej lub więcej kolumn pasma górskiego o równej wysokości, przy czym kolumny znajdujące się bezpośrednio po lewej i prawej stronie mają niższą wysokość.
Łatwo jest wizualnie stwierdzić, że przykład ma cztery szczyty w tych nawiasach:
1, 2, 2, 3, (4), 3, (5), 3, 2, 1, 2, (3, 3, 3), 2, 2, 1, (3)
Zwróć uwagę, jak (3, 3, 3)sekcja plateau liczy się jako szczyt, ponieważ jest to ciągły zestaw kolumn o równej wysokości, wyższej niż sąsiednie kolumny.
Ostatni (3)liczy się również jako szczyt, ponieważ dla celów tego wyzwania zdefiniujemy lewego sąsiada z lewej kolumny i prawego sąsiada z prawej kolumny, aby oba miały wysokość zero.
Oznacza to, że lista z tylko jedna wartość, na przykład 1, 1, 1, może być interpretowany jako 0, 1, 1, 1, 0, a tym samym ma jeden pik, a nie żaden: 0, (1, 1, 1), 0.
Jedyną listą z zerowymi pikami jest pusta lista.
Wyzwanie
Napisz funkcję lub program, który pobierze dowolną listę liczb całkowitych dodatnich i wypisze lub zwróci liczbę pików w odpowiednim paśmie górskim.
Najkrótszy kod w bajtach wygrywa. Tiebreaker jest wcześniejszym postem.
Przypadki testowe
Input List -> Output Peak Count
[empty list] -> 0
1, 1, 1 -> 1
1, 2, 2, 3, 4, 3, 5, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 3 -> 4
1 -> 1
1, 1 -> 1
2, 2, 2, 2, 2 -> 1
90 -> 1
2, 1, 2 -> 2
5, 2, 5, 2, 5 -> 3
2, 5, 2, 5, 2, 5, 2 -> 3
1, 2, 3, 4 -> 1
1, 2, 3, 4, 1, 2 -> 2
1, 3, 5, 3, 1 -> 1
7, 4, 2, 1, 2, 3, 7 -> 2
7, 4, 2, 1, 2, 1, 2, 3, 7 -> 3
1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 -> 10
1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1 -> 10
2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2 -> 10
1, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 3, 3, 3, 1 -> 4
12, 1, 2, 1, 2, 3, 3, 3, 2, 4, 4, 4, 1, 5, 5, 4, 7, 9 -> 6
87, 356, 37673, 3676, 386, 909, 909, 909, 909, 454, 909, 909 -> 3
87, 356, 37673, 3676, 386, 909, 909, 909, 909, 454, 909, 908, 909 -> 4