इनपुट:
शून्य से अधिक पूर्णांकों का एक गैर-रिक्त अनुक्रम, जिसकी लंबाई 1 से अधिक है।
आउटपुट:
अनुक्रम सहित न्यूनतम और अधिकतम तत्वों के बीच सबसे लंबे समय तक परिणाम के सभी तत्वों का सबसे बड़ा उत्पाद।
ध्यान दें:
क्योंकि न्यूनतम और अधिकतम तत्वों को दोहराया जा सकता है, फिर एक निश्चित उत्तर के लिए सबसे लंबे समय तक संभवता को खोजने के लिए आवश्यक है, जिसके एक छोर पर एक न्यूनतम और दूसरे छोर पर अनुक्रम के अधिकतम तत्व हैं। यदि कई सबसे लंबे परिणाम हैं तो सबसे बड़े उत्पाद के साथ बाद का चयन करें।
उदाहरण:
पहला उदाहरण:
इनपुट: [5, 7, 3, 2, 1, 2, 2, 7, 5]
आउटपुट: 42
स्पष्टीकरण:
min == 1
, max == 7
। न्यूनतम और अधिकतम छोरों पर 2 संभावित अनुवर्ती हैं: [1, 2, 2, 7]
और [7, 3, 2, 1]
। उनकी लंबाई बराबर है, इसलिए उत्पादों की तुलना करना: 7*3*2*1 == 42
और 1*2*2*7 == 28
। क्योंकि 42 >= 28
, उत्तर 42
:।
दूसरा उदाहरण:
इनपुट: [1, 2, 2, 2, 4, 3, 3, 1]
आउटपुट: 32
स्पष्टीकरण:
min == 1
, max == 4
। 2 परिणाम: [1, 2, 2, 2, 4]
और [4, 3, 3, 1]
। की लंबाई से [1, 2, 2, 2, 4]
अधिक है [4, 3, 3, 1]
। उत्पाद: 1*2*2*2*4 == 32
=> उत्तर है 32
।
3 डी उदाहरण:
इनपुट: [1, 2, 3, 4, 3, 3, 1]
आउटपुट: 36
संक्षिप्त विवरण:
min == 1
, max == 4
। 2 परिणाम: [1, 2, 3, 4]
और [4, 3, 3, 1]
। 1*2*3*4 == 24
, 4*3*3*1 == 36
, 36 >= 24
=> जवाब है 36
।
चौथा उदाहरण:
इनपुट: [2, 2, 2]
आउटपुट: 8
स्पष्टीकरण:
min == 2
, max == 2
। 2 अलग अनुवर्ती: [2, 2]
और [2, 2, 2]
। की लंबाई से [2, 2, 2]
अधिक है [2, 2]
। उत्पाद: 2*2*2 == 8
=> उत्तर है 8
।
अधिक (यादृच्छिक) उदाहरण:
>>>[7, 2, 3, 6, 8, 6, 2, 5, 4, 3]
288
>>>[3, 3, 8, 9, 1, 7, 7, 2, 2, 4]
9
>>>[3, 2, 6, 5, 4, 1, 8, 8, 7, 9]
4032
>>>[7, 4, 2, 8, 8, 3, 9, 9, 5, 6]
31104
अपना समाधान जांचें:
यहाँ पायथन 3 लैम्ब्डा (788 बाइट्स) है , जो कार्य की आवश्यकता को पूरा करता है:
lambda O: __import__('functools').reduce(__import__('operator').mul,O[[[slice(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1),slice(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1)][__import__('functools').reduce(__import__('operator').mul,O[O.index(min(O)):(len(O)-1-O[::-1].index(max(O)))+1],1)>=__import__('functools').reduce(__import__('operator').mul,O[O.index(max(O)):len(O)-1-O[::-1].index(min(O))+1],1)],slice(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1),slice(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1)][(len(range(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1))>len(range(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1)))-(len(range(O.index(min(O)),(len(O)-1-O[::-1].index(max(O)))+1))<len(range(O.index(max(O)),len(O)-1-O[::-1].index(min(O))+1)))]],1)
विजेता:
सबसे छोटा समाधान जीत जाएगा। सभी प्रोग्रामिंग भाषाओं को स्वीकार किया।
पुनश्च: मुझे आपके समाधानों के स्पष्टीकरण से प्रसन्नता होगी