Pozitif tamsayıların listesi, her bir liste girişinin dağların dikey bir bölümünün yüksekliğini temsil ettiği, nicelenmiş bir dağ silsilesi olarak görselleştirilebilir.
Örneğin, liste
1, 2, 2, 3, 4, 3, 5, 3, 2, 1, 2, 3, 3, 3, 2, 2, 1, 3
menzil olabilir
x
x x
xxxxx xxx x
xxxxxxxx xxxxxx x
xxxxxxxxxxxxxxxxxx
(Daha az şiirsel insanlar buna çubuk grafik diyebilir, ancak dalıyorum.)
Bu zorluktaki soru şudur: Bazı keyfi listelerin dağ aralığında kaç tepe var? Esasen, listede kaç tane yerel makam var?
Bir tepe, hemen hemen sola ve sağın sütunlarının yüksekliklerinin düşük olduğu dağ aralığının bir veya daha fazla sütununun yüksekliğinde eşit olan bitişik bir bölümü olarak tanımlanır.
Örneğin parantez içindeki bu yerlerde dört tepe noktası olduğunu görsel olarak söylemek kolaydır:
1, 2, 2, 3, (4), 3, (5), 3, 2, 1, 2, (3, 3, 3), 2, 2, 1, (3)
(3, 3, 3)
Plato bölümünün tepe noktası olarak nasıl sayıldığına dikkat edin, çünkü komşu sütunlarından daha yüksek, aynı yükseklikte sütunlar kümesidir.
Sonuncusu (3)
da bir zirve olarak sayılır, çünkü bu zorluğun amaçları için en soldaki sütunun sol komşusunu ve en sağdaki sütunun sağ komşusunu hem sıfır yüksek olacak şekilde tanımlayacağız.
Tek bir değer ile bir liste, örneğin, bu araçlar 1, 1, 1
, olarak yorumlanabilir 0, 1, 1, 1, 0
, böylece, bir tepe değil, hiç var 0, (1, 1, 1), 0
.
Sıfır tepe noktası olan tek liste boş listedir.
Meydan okuma
Olumlu tamsayıların rastgele bir listesine giren ve karşılık gelen dağlık aralıktaki tepe sayısını yazdıran veya döndüren bir işlev veya program yazın.
Bayt cinsinden en kısa kod kazanır. Tiebreaker daha önce yayınlandı.
Test Kılıfları
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