Memasukkan:
Urutan bilangan bulat yang tidak kosong lebih besar dari nol, yang panjangnya lebih besar dari 1.
Keluaran:
Produk terbesar dari semua elemen urutan terpanjang antara elemen minimum dan maksimum urutan termasuk mereka.
catatan:
Karena elemen minimum dan maksimum dapat diulangi, maka untuk jawaban yang pasti diperlukan untuk menemukan urutan terpanjang yang mungkin, di satu ujung yang merupakan minimum dan di ujung lainnya elemen maksimum dari urutan. Jika ada beberapa urutan terpanjang kemudian pilih urutan dengan produk terbesar.
Contoh:
Contoh 1:
Memasukkan: [5, 7, 3, 2, 1, 2, 2, 7, 5]
Keluaran: 42
Penjelasan:
min == 1
, max == 7
. Ada 2 kemungkinan kemungkinan dengan min dan maks pada ujung: [1, 2, 2, 7]
dan [7, 3, 2, 1]
. Panjangnya sama, jadi membandingkan produk: 7*3*2*1 == 42
dan 1*2*2*7 == 28
. Karena 42 >= 28
, jawabannya: 42
.
Contoh 2:
Memasukkan: [1, 2, 2, 2, 4, 3, 3, 1]
Keluaran: 32
Penjelasan:
min == 1
, max == 4
. 2 urutan: [1, 2, 2, 2, 4]
dan [4, 3, 3, 1]
. Panjang [1, 2, 2, 2, 4]
lebih besar dari panjang [4, 3, 3, 1]
. produk: 1*2*2*2*4 == 32
=> jawabannya adalah 32
.
Contoh 3d:
Memasukkan: [1, 2, 3, 4, 3, 3, 1]
Keluaran: 36
Penjelasan singkat:
min == 1
, max == 4
. 2 urutan: [1, 2, 3, 4]
dan [4, 3, 3, 1]
. 1*2*3*4 == 24
, 4*3*3*1 == 36
, 36 >= 24
=> Jawabannya adalah 36
.
Contoh 4:
Memasukkan: [2, 2, 2]
Keluaran: 8
Penjelasan:
min == 2
, max == 2
. 2 urutan berbeda: [2, 2]
dan [2, 2, 2]
. Panjang [2, 2, 2]
lebih besar dari panjang [2, 2]
. produk: 2*2*2 == 8
=> jawabannya adalah 8
.
Lebih banyak contoh (acak) :
>>>[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
Periksa solusi Anda:
Berikut adalah Python 3 lambda (788 byte) , yang memenuhi persyaratan tugas:
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)
Pemenang:
Solusi terpendek akan menang. Semua bahasa pemrograman diterima.
PS: Saya akan senang dengan penjelasan dari solusi Anda