Giriş:
Uzunluğu 1'den büyük olan, sıfırdan büyük olmayan boş olmayan bir tam sayı dizisi.
Çıktı:
Kendileri de dahil olmak üzere sıranın minimum ve maksimum elemanları arasındaki en uzun alt dizilimin tüm elemanlarının en büyük ürünü.
Not:
Çünkü minimum ve maksimum elemanlar tekrarlanabilir, o zaman bir ucunda minimum ve diğer ucunda dizinin maksimum elemanlarında olası en uzun sonucu bulmak için gerekli kesin bir cevap verilir. Birden fazla uzun alt ek varsa, o zaman en büyük ürünü içeren alt diziyi seçin.
Örnekler:
1. örnek:
Giriş: [5, 7, 3, 2, 1, 2, 2, 7, 5]
Çıktı: 42
Açıklama:
min == 1
, max == 7
. Uçlarda min ve maks olmak üzere 2 olası ek vardır: [1, 2, 2, 7]
ve [7, 3, 2, 1]
. Uzunlukları eşittir, bu nedenle ürünleri karşılaştırmak: 7*3*2*1 == 42
ve 1*2*2*7 == 28
. Çünkü 42 >= 28
, cevap: 42
.
2. örnek:
Giriş: [1, 2, 2, 2, 4, 3, 3, 1]
Çıktı: 32
Açıklama:
min == 1
, max == 4
. 2 sıra: [1, 2, 2, 2, 4]
ve [4, 3, 3, 1]
. Uzunluğu, [1, 2, 2, 2, 4]
uzunluktan büyük [4, 3, 3, 1]
. Ürün: 1*2*2*2*4 == 32
=> cevaptır 32
.
3d örnek:
Giriş: [1, 2, 3, 4, 3, 3, 1]
Çıktı: 36
Kısa açıklama:
min == 1
, max == 4
. 2 sıra: [1, 2, 3, 4]
ve [4, 3, 3, 1]
. 1*2*3*4 == 24
, 4*3*3*1 == 36
, 36 >= 24
=> Cevaptır 36
.
4. örnek:
Giriş: [2, 2, 2]
Çıktı: 8
Açıklama:
min == 2
, max == 2
. 2 farklı konu: [2, 2]
ve [2, 2, 2]
. Uzunluğu, [2, 2, 2]
uzunluktan büyük [2, 2]
. Ürün: 2*2*2 == 8
=> cevaptır 8
.
Daha fazla (rastgele) örnek:
>>>[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
Çözümünüzü kontrol edin:
Görevin gereğini yerine getiren Python 3 lambda (788 bytes) :
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)
Kazanan:
En kısa çözüm kazanacak. Tüm programlama dilleri kabul edildi.
Not: Çözümlerinizle ilgili açıklamalardan memnuniyet duyacağım