Daftar bilangan bulat positif dapat divisualisasikan sebagai jajaran gunung terukur di mana setiap entri daftar mewakili ketinggian satu bagian vertikal pegunungan.
Misalnya, daftarnya
1, 2, 2, 3, 4, 3, 5, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 3
bisa menjadi jangkauan
x
x x
xxxxx xxx x
xxxxxxxx xxxxxx x
xxxxxxxxxxxxxxxxxx
(Orang yang kurang puitis mungkin menyebut ini bagan batang, tapi saya ngelantur.)
Pertanyaan dalam tantangan ini adalah: Berapa banyak puncak yang ada di pegunungan dari beberapa daftar yang berubah-ubah? Pada dasarnya, berapa banyak maksimum lokal yang ada dalam daftar?
Puncak didefinisikan sebagai bagian yang berdekatan dari satu atau lebih kolom dari pegunungan yang semuanya tingginya sama, di mana kolom langsung ke kiri dan kanan tingginya lebih rendah.
Secara visual mudah untuk mengetahui bahwa contoh memiliki empat puncak di lokasi yang di-kurung:
1, 2, 2, 3, (4), 3, (5), 3, 2, 1, 2, (3, 3, 3), 2, 2, 1, (3)
Perhatikan bagaimana bagian (3, 3, 3)
dataran tinggi dihitung sebagai puncak karena merupakan kumpulan kolom berdekatan yang tingginya sama, lebih tinggi dari kolom tetangga.
Yang terakhir (3)
dianggap sebagai puncak juga karena, untuk keperluan tantangan ini, kita akan mendefinisikan tetangga kiri kolom paling kiri dan tetangga kanan kolom paling kanan untuk keduanya menjadi tinggi nol.
Ini berarti bahwa daftar dengan hanya satu nilai, misalnya 1, 1, 1
, dapat diartikan sebagai 0, 1, 1, 1, 0
, dan dengan demikian memiliki satu puncak, tidak satupun: 0, (1, 1, 1), 0
.
Satu-satunya daftar dengan nol puncak adalah daftar kosong.
Tantangan
Tulis fungsi atau program yang mengambil daftar bilangan bulat positif sembarang dan mencetak atau mengembalikan jumlah puncak dalam rentang gunung yang sesuai.
Kode terpendek dalam byte menang. Tiebreaker adalah posting sebelumnya.
Uji Kasus
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