सकारात्मक पूर्णांक की एक सूची को एक परिमाणित पर्वत श्रृंखला के रूप में देखा जा सकता है जहां प्रत्येक सूची प्रविष्टि पहाड़ों के एक ऊर्ध्वाधर खंड की ऊंचाई का प्रतिनिधित्व करती है।
उदाहरण के लिए, सूची
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)
चोटी के रूप में अच्छी तरह से गिना जाता है, क्योंकि इस चुनौती के प्रयोजनों के लिए, हम बाएं स्तंभ के बाएं पड़ोसी को परिभाषित करेंगे और सबसे दाहिने स्तंभ के दाएं पड़ोसी को ऊंचाई शून्य होगा।
इसका मतलब है कि उदाहरण के लिए केवल एक मान के साथ एक सूची, के 1, 1, 1
रूप में व्याख्या की जा सकती है 0, 1, 1, 1, 0
, और इस प्रकार एक चोटी है, कोई नहीं 0, (1, 1, 1), 0
:।
शून्य चोटियों वाली एकमात्र सूची खाली सूची है।
चुनौती
एक फ़ंक्शन या प्रोग्राम लिखें, जो सकारात्मक पूर्णांक और प्रिंट की एक मनमानी सूची में लेता है या संबंधित पर्वत श्रृंखला में चोटियों की संख्या लौटाता है।
बाइट्स में सबसे छोटा कोड जीतता है। टाईब्रेकर पहले की पोस्ट है।
परीक्षण के मामलों
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