양의 정수 목록은 양자화 된 산맥으로 시각화 될 수 있으며, 각 목록 항목은 산의 한 수직 섹션의 높이를 나타냅니다.
예를 들어, 목록
1, 2, 2, 3, 4, 3, 5, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 3
범위가 될 수 있습니다
x
x x
xxxxx xxx x
xxxxxxxx xxxxxx x
xxxxxxxxxxxxxxxxxx
덜 시적인 사람들은 이것을 막대 차트라고 할 수 있지만, 나는 혼란스러워합니다.
이 도전에 대한 의문은 다음과 같습니다. 일부 임의의 목록의 산맥에는 몇 개의 봉우리가 있습니까? 기본적으로 목록에 몇 개의 로컬 최대 값 이 있습니까?
피크는 모두 높이가 동일한 산맥의 하나 이상의 열의 연속적인 섹션으로 정의되며, 여기서 왼쪽과 오른쪽의 열은 높이가 낮습니다.
괄호로 묶은 위치에서 예제에 네 개의 피크가 있음을 시각적으로 쉽게 알 수 있습니다.
1, 2, 2, 3, (4), 3, (5), 3, 2, 1, 2, (3, 3, 3), 2, 2, 1, (3)
(3, 3, 3)고원 섹션은 높이가 같고 인접한 열보다 높은 연속적인 열 집합이므로 피크로 계산되는 방법에 유의하십시오 .
(3)이 도전의 목적을 위해 가장 왼쪽 열의 가장 가까운 이웃과 가장 오른쪽 열의 가장 가까운 이웃이 모두 높이 0으로 정의 되기 때문에 마지막도 피크로 계산됩니다 .
즉, 예를 들어 값이 하나 뿐인 목록 1, 1, 1은로 해석 될 수 있으므로 0, 1, 1, 1, 0하나가 아닌 하나의 피크를 갖습니다 0, (1, 1, 1), 0.
피크가없는 유일한 목록은 빈 목록입니다.
도전
양의 정수로 된 임의의 목록을 가져와 해당 산맥의 피크 수를 인쇄하거나 반환하는 함수 또는 프로그램을 작성하십시오.
바이트 단위의 가장 짧은 코드가 이깁니다. Tiebreaker는 이전 게시물입니다.
테스트 사례
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