正の整数のリストは、各リストエントリが山の1つの垂直セクションの高さを表す、量子化された山の範囲として視覚化できます。
たとえば、リスト
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つまたは複数の列の連続したセクションとして定義されます。ここで、左右の列の高さは低くなります。
この例では、括弧で囲まれた位置に4つのピークがあることが視覚的にわかりやすくなります。
1, 2, 2, 3, (4), 3, (5), 3, 2, 1, 2, (3, 3, 3), 2, 2, 1, (3)
(3, 3, 3)
プラトーセクションは、隣接する列よりも高さが等しい連続した列のセットであるため、ピークとしてカウントされることに注意してください。
(3)
この課題の目的のために、左端の列の左隣と右端の列の右隣を両方とも高さゼロに定義するため、最後もピークとしてカウントされます。
これは、たとえば値が1つだけのリストは1, 1, 1
として解釈できるため0, 1, 1, 1, 0
、なしではなく1つのピークがあることを意味します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