Ini adalah perombakan dari pertanyaan yang sekarang dihapus oleh ar kang . Jika OP dari pertanyaan itu ingin mengklaim kembali pertanyaan ini atau memiliki masalah dengan saya memposting ini, saya akan dengan senang hati mengakomodasi
Diberikan daftar bilangan bulat sebagai input, temukan jumlah maksimum yang mungkin dari sublist kontinu yang dimulai dan diakhiri dengan nilai yang sama. Sublist harus paling sedikit 2. Sebagai contoh untuk daftar
[1, 2, -2, 4, 1, 4]
Ada 2 daftar kontinyu yang berbeda mulai dan berakhir dengan nilai yang sama
[1,2,-2,4,1] -> 6
[4,1,4] -> 9
Jumlah yang lebih besar adalah 9 sehingga Anda menghasilkan 9.
Anda dapat menganggap setiap input mengandung setidaknya 1 duplikat.
Ini adalah kode-golf sehingga jawaban akan dicetak dalam byte dengan lebih sedikit byte yang lebih baik.
Uji kasus
[1,2,-2,4,1,4] -> 9
[1,2,1,2] -> 5
[-1,-2,-1,-2] -> -4
[1,1,1,8,-1,8] -> 15
[1,1,1,-1,6,-1] -> 4
[2,8,2,-3,2] -> 12
[1,1,80] -> 2
[2,8,2,3,2] -> 17
sumber
[2,8,2,3,2]
12 atau 17? Saya kira 17.Jawaban:
Haskell , 62 byte
f
mengambil daftar bilangan bulat dan mengembalikan bilangan bulat.Cobalah online!
Bagaimana itu bekerja
t
adalah fungsi standar "dapatkan semua sufiks dari daftar tanpa mengimporData.List.tails
".f l
, pemahaman daftar iterates melalui semua sufiks non-kosong dari daftar argumenl
, dengan elemen pertamax
dan sisanyam
.m
, memilih elemen pertamay
dan sisanyan
.x
dany
sama, pemahaman daftar mencakup jumlah elemen di antara mereka. Sublist ini samax:m
dengan suffixnya yangn
dilepas, sehingga jumlahnya dapat dihitung sebagaix+sum m-sum n
.sumber
JavaScript (ES6),
6862 byteUji kasus
Tampilkan cuplikan kode
Berkomentar
sumber
y - a[i]
dan(x += y) < m
- IMHO kode akan sedikit lebih jelas dengan mereka bertukar, sejak itu sepertinya golf sederhana dari(x += y) < m || y != a[i]
.(x+=y)<m|y-a[i]
bisa juga disalahtafsirkan(x+=y)<(m|y-a[i])
juga. Saya tidak yakin itu akan menghapus ambiguitas. (Tetap diedit karena saya cenderung lebih suka versi ini.)y-a[i]|(x+=y)<m
sebagai(y-a[i]|(x+=y))<m
...Jelly , 12 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Sekam , 10 byte
Cobalah online!
Penjelasan
sumber
Haskell , 66 byte
Cobalah online!
sumber
R ,
108103908883 byteCobalah online!
combn
menyerang lagi! Hasilkan semua sublists dengan panjang setidaknya2
, setel jumlah sublist menjadi-Inf
jika yang pertama dan terakhir tidak sama, dan ambil maks semua jumlah.The
"if"
akan menaikkan sekelompok peringatan tetapi mereka aman dapat diketahui - itu mungkin yang terbaik golf trik di sini,rev(p)-p
adalah nol di IFF elemen pertamap[1]==tail(p,1)
, dan"if"
menggunakan elemen pertama dari kondisinya dengan peringatan.sumber
Python 3 , 81 byte
Cobalah online!
sumber
Python , 62 byte
Cobalah online!
Output sebuah daftar tunggal .
sumber
Jelly ,
13, 12 byteCobalah online!
Satu byte disimpan oleh Tn. Xcoder, yang saat ini bersaing dengan saya. : D
Penjelasan:
sumber
Bahasa Wolfram (Mathematica) , 54 byte
Cobalah online!
sumber
Pyth, 15 byte
Cobalah online
Penjelasan
sumber
05AB1E , 9 byte
Cobalah online!
Penjelasan
sumber
Bersih ,
949086 byteCobalah online!
sumber
[1, 1, 80]
test case.Python 2 , 86 byte
Dikalahkan oleh Dennis
Cobalah online!
Menghasilkan semua sublists lebih besar dari panjang 2, di mana elemen pertama sama dengan yang terakhir, lalu memetakan masing-masing ke jumlahnya dan memilih nilai terbesar.
sumber
enumerate
.Ruby , 64 byte
Cobalah online!
sumber
Julia 0,6 , 70 byte
Cobalah online!
sumber
Jeli , 11 byte
Menggunakan beberapa fitur yang mengunggah tantangan.
Cobalah online!
Bagaimana itu bekerja?
-1 dengan bantuan dari caird .
sumber
Batch, 179 byte
Mengambil input sebagai parameter baris perintah.
sumber
C, 104 byte
Cobalah online!
C (gcc) , 99 byte
Cobalah online!
sumber
Clojure, 92 byte
sumber
Java 8, 129 bye
Untuk setiap bilangan bulat
X
dalam daftar, fungsi menemukan jumlah sublist terbesar dengan awal dan akhirX
. Kemudian, ia menemukan jumlah maksimum yang ditentukan OP.sumber
[2,8,2,-3,2]
test case, dan mungkin[1,1,80]
juga.Perl,
6159 byteTermasuk
+3
untuk-p
:max_ident_run.pl
:Jalankan sebagai:
sumber