Diberikan daftar bilangan bulat, tugas Anda adalah menampilkan nilai terbesar kedua dalam elemen k pertama , untuk setiap k antara 2 dan panjang daftar input.
Dengan kata lain, output nilai terbesar kedua untuk setiap awalan input.
Anda dapat menampilkan nilai arbitrer untuk elemen pertama (di mana k = 1), atau cukup menghilangkan nilai ini, karena tidak ada maksimum kedua untuk daftar 1 elemen. Anda dapat menganggap setidaknya ada 2 elemen dalam input.
Kode terpendek menang.
Contohnya
Input:
1 5 2 3 5 9 5 8
Output:
1 2 3 5 5 5 8
Input:
1 1 2 2 3 3 4
Output:
1 1 2 2 3 3
Input:
2 1 0 -1 0 1 2
Output:
1 1 1 1 1 2
code-golf
number
array-manipulation
jimmy23013
sumber
sumber
k
ditentukan?1
tidak, tegasnya, yang nilai terbesar kedua dari1,1
(2 misalnya) itu nilai kedua ketika diurutkan menurun.-1, 0, 0, 1, 1, 2
untuk kasus uji terakhir.)Jawaban:
05AB1E , 5 byte
Cobalah online!
Pengembalian
[]
(nilai arbitrer) untuk pertama.sumber
η¦ε{¨θ
harus bekerja selama 6 byteZ©KZ®‚¹sÃ
adalah apa yang saya pikirkan, tidak tahuà
apa-apa!Áθ
sebagai gantinya.Sekam ,
97 byteDisimpan satu atau dua byte berkat @Zgarb
Pengembalian
0
untuk "maksimum kedua" pertamaPenjelasan
Cobalah online!
sumber
→hO
dan menyimpan satu byte.Python 2 , 54 byte
Cobalah online!
sumber
JavaScript (ES6),
585150 byteDisimpan 1 byte berkat @Neil
Tambahkan
undefined
untuk k = 1 .Uji kasus
NB: Cuplikan ini digunakan
JSON.stringify()
untuk keterbacaan, yang - sebagai efek samping - dikonversiundefined
kenull
.Tampilkan cuplikan kode
sumber
a=>a.map(e=>(b=[e,...b]).sort((a,b)=>b-a)[1],b=[])
hanya 50.Pyth , 8 byte
Cobalah online! atau Coba Test Suite!
Bagaimana?
Ini menampilkan elemen pertama dari daftar sebagai nilai pertama dalam daftar, sesuai spesifikasi. Anda dapat menampilkan nilai arbitrer untuk elemen pertama .
sumber
Jelly , 8 byte
Cobalah online!
Nilai pertama akan menjadi 0, selalu, dan angka-angka berikut akan menjadi maksimum kedua dari setiap awalan.
Penjelasan
sumber
Java (OpenJDK 8) ,
8786 byteCobalah online!
sumber
int x,y=x=
. Saya tidak tahu deklarasi dan penugasan terpisah dapat dilakukan dalam pernyataan yang sama.Python 2 , 45 byte
Cobalah online!
Sisi kanan kode cukup jelas. Namun, apa yang kita taruh di sebelah kiri
and
? Karena kita menyatukan bagian-bagian dari daftar secara rekursif, kita perlu sisi kiri untuk menjadi jujur jikal
memiliki 2 elemen atau lebih, dan sebaliknya daftar kosong.l[1:]
memenuhi kriteria ini dengan baik.sumber
C # (Mono) , 81 byte
Cobalah online!
sumber
Brachylog , 10 byte
Cobalah online!
sumber
Batch, 123 byte
sumber
APL (Dyalog) , 15 byte
Cobalah online!
sumber
05AB1E , 5 byte
Menemukan 5-byter lain, sangat berbeda dari solusi Erik . Nilai arbitrer adalah elemen pertama dari daftar.
Cobalah online!
Penjelasan
Mari kita ambil contoh, agar lebih mudah dipahami.
Pertama kita mendapatkan input implisit, katakanlah itu
[1, 5, 2, 3, 5, 9, 5, 8]
.Kemudian, kami mendorong awalannya menggunakan
η
-[[1], [1, 5], [1, 5, 2], [1, 5, 2, 3], [1, 5, 2, 3, 5], [1, 5, 2, 3, 5, 9], [1, 5, 2, 3, 5, 9, 5], [1, 5, 2, 3, 5, 9, 5, 8]]
.Sekarang, kode memetakan daftar dan mengurutkan setiap awalan menggunakan
{
-[[1], [1, 5], [1, 2, 5], [1, 2, 3, 5], [1, 2, 3, 5, 5], [1, 2, 3, 5, 5, 9], [1, 2, 3, 5, 5, 5, 9], [1, 2, 3, 5, 5, 5, 8, 9]]
.Kami kemudian mengambil elemen terakhir dan memindahkannya ke awal:
[[1], [5, 1], [5, 1, 2], [5, 1, 2, 3], [5, 1, 2, 3, 5], [9, 1, 2, 3, 5, 5], [9, 1, 2, 3, 5, 5, 5], [9, 1, 2, 3, 5, 5, 5, 8]]
.Tentu saja, sekarang kode mendapatkan elemen terakhir dari setiap sublist menggunakan
θ
-[1, 1, 2, 3, 5, 5, 5, 8]
(yang pertama adalah nilai arbitrer.sumber
CJam , 16 byte
Cobalah online!
Mengembalikan elemen pertama untuk pertama.
Terima kasih kepada Challenger5 .
sumber
{_,,:)\f{<$-2=}}
lebih pendek dua byte.R ,
5449 byteTerima kasih kepada Giuseppe -5 byte. Saya tidak tahu fitur ini
seq()
.Cobalah online!
sumber
seq(x<-scan())
lebih pendek beberapa byte.Japt ,
1210 byteArray output terdiri dari elemen pertama dalam array input diikuti oleh urutan yang diinginkan.
Menguji
Penjelasan
Input array secara implisit
U
.Peta berakhir
U
, di manaY
indeks saat ini.Potong
U
dari0
menjadiY+1
.Sortir turun.
Dapatkan elemen kedua.
Secara implisit menampilkan array yang dihasilkan.
sumber
MATL ,
1910 byteTerima kasih kepada Luis Mendo untuk mencukur off 9 bytes!
Coba di sini .
Penjelasan
sumber
J, 13 byte
Cobalah online!Elemen pertama selalu 1.
Penjelasan
Ruang itu penting.
sumber
Ohm ,
108 byte-2 byte berkat ETHproductions.
Cobalah online!
Eh, ini aneh tapi saya tidak tahu bagaimana lagi untuk menekan angka negatif ...Saya tidak benar - benar tahu Ohm. : Psumber
0 2-
sepertinya sangat aneh ...2~
?Mathematica, 45 byte
Cobalah online!
sumber
Perl 5 , 42 + 1 (-a) = 43 byte
Cobalah online!
sumber
Swift 3 , 67 byte
Test Suite.
Swift 3 , 65 byte
Test Suite.
Bagaimana cara menjalankannya?
Yang pertama adalah fungsi lengkap yang mengambil input sebagai parameter fungsi dan mencetak hasilnya. Anda dapat menggunakannya persis seperti yang ditunjukkan pada tautan pengujian. Saya memutuskan untuk menambahkan instruksi, karena tipe fungsi kedua digunakan sangat jarang dan kebanyakan orang bahkan tidak tahu keberadaannya. Pemakaian:
Yang kedua adalah fungsi anonim, seperti lambdas. Anda dapat menggunakannya persis seperti yang Anda lakukan itu Python, mendeklarasikan variabel
f
dan memanggilnya:atau bungkus di antara tanda kurung dan panggil langsung (
(...)(ArrayGoesHere)
):sumber
PHP, 53 byte
mengambil input dari argumen baris perintah. Output dibatasi, dipimpin, dan dibuntuti oleh semicola.
Jalankan dengan
-nr
atau coba online .Menghasilkan peringatan di PHP 7.1; ganti
a&
dengan""<
untuk memperbaiki.Atau gunakan
for(;++$i<$argc;rsort($a),print$a[1]._)$a[]=$argv[$i];
(54 byte)sumber
Mathematica 42 Bytes
Secara mandiri tiba pada jawaban yang sangat mirip dengan @Jenny_mathy tetapi 3 byte lebih pendek
Menyadari bahwa max berjalan pertama hanya membutuhkan 15 byte dan dua panggilan fungsi !:
Ini dapat dilakukan secara ringkas karena
Max
memiliki atributFlat
danOneIdentity
tetapi itu tidak benar untukRankedMax
yang akan menjadi pengganti yang logis. Sayangnya mendefinisikan atribut atau memodifikasinya pada fungsi yang ada memakan terlalu banyak byte, sehingga perataan harus dilakukan dengan cara lain.Semua max berjalan n dapat ditemukan dalam 48 byte:
sumber
Pyth, 15 byte
FNr2hlQ@_S<QN1
Coba di sini: https://pyth.herokuapp.com/?code=FNr2hlQ%40_S%3CQN1&input=%5B1%2C+5%2C+2%2C+3%2C+5%2C+9%2C+5% 2C + 8% 5D & debug = 0
Penjelasan
FNr2hlQ
- Untuk loop dengan penghitung 2 <= N <= panjang daftar@_S<QN1
- Elemen ke-2 ketika elemen N pertama dari daftar diurutkan dalam urutan naik dan kemudian dibalik (diurutkan dalam urutan menurun)sumber
k , 13 byte
Cobalah online!
sumber
Oktaf, 51 byte
- Nilai arbitrer dikembalikan untuk elemen pertama.
Cobalah online!
sumber
JavaScript (ES6),
4351 byteSunting: Menambahkan 8 byte karena diinginkan penyortiran numerik.
:(
Menjaga yang ini di sini, meskipun, karena lebih pendek memberikan yang diinginkan memesan leksikografis:
Kedua ekspresi menghasilkan
undefined
elemen pertama.Kode uji
Tampilkan cuplikan kode
sumber
10
, seperti.sort()
mengurutkan secara leksikografis secara default (yaitu 1,10,100,11,12,13, ..., 2,20,21, ...). Anda harus memasukkan(a,b)=>a-b
atau serupa untuk mengurutkan berdasarkan nomor.Clojure, 56 byte
Mungkin ada cara yang lebih baik untuk menghasilkan awalan tersebut.
sumber