Diberikan array bilangan bulat positif, output array semua elemen yang lebih besar atau sama dengan yang berdekatan. Sebagian besar elemen akan memiliki dua elemen yang berdekatan; elemen pertama dan terakhir adalah kasus khusus, karena mereka hanya memiliki satu elemen yang berdekatan.
Anda dapat mengasumsikan bahwa array mengandung setidaknya dua elemen.
Kasus uji:
Input | Output
[4,2,6,12,4,5,4,3] | [4,12,5]
[1,2] | [2]
[1,2,3,2,1] | [3]
[3,2,1,2,3] | [3,3]
[4,4] | [4,4]
[2,4,4,4,1] | [4,4,4]
[2,3,3,4] | [3,4]
[4,3,3,4] | [4,4]
Ini kode-golf , kode terpendek menang!
[4,3,3,4]
sebagai testcase. Solusi saya tidak menanganinya dengan sangat baik.Jawaban:
Jelly ,
13 1211 byteTautan monadik mengambil daftar bilangan bulat positif dan mengembalikan daftar yang difilter yang hanya berisi yang lebih besar atau sama dengan semua tetangga mereka.
Cobalah online!
Sebelumnya 12 byter :
Sebelumnya 13 byter :
Bagaimana?
sumber
»
- bagaimana kalau 10 ..?Python , 54 byte
Cobalah online!
I / O adalah dengan tupel dan bukan daftar.
Python , 57 byte
Cobalah online!
Alt 57:
sumber
Mathematica 22 Bytes
sumber
Haskell,
504942 byteCobalah online!
scanr(:)[0]
membuat daftar ekor(0:l)
, masing-masing dengan akhir0
, misalnya untukl = [4,3,3,4]
:[[0,4,3,3,4,0],[4,3,3,4,0],[3,3,4,0],[3,4,0],[4,0],[0]]
yang pola cocok againsi:j:k:_
untuk mengekstrak semua daftar dengan setidaknya 3 unsur yang diberi namai
,j
dank
. Simpanj
jika> =i
danj
.Sunting: Ørjan Johansen menyimpan 7 byte. Terima kasih!
sumber
i:j:k:_<-scanr(:)[0]$0:l
lebih pendek. (Sedikit menyesuaikantails=scanr(:)[]
trik "standar" .)Dyalog APL,
3130282221bytesCobalah online!
Penjelasan (Saya tidak pandai menjelaskan hal-hal):
sumber
Haskell , 40 byte
Cobalah online!
sumber
JavaScript (ES6), 40 byte
sumber
Python 3 ,
84 75 *71 byteCobalah online!
* @ LeakyNun menyimpan 9 byte menggunakan trik operator yang pintar.
sumber
lambda l,k=[0]:[l[i]for i in range(len(l))if(k+l+k)[i+2]<=l[i]>=(k+l+k)[i]]
Jelly , 15 byte
Cobalah online!
sumber
05AB1E ,
151413 byteCobalah online!
Penjelasan
Solusi 15 byte sebelumnya
Cobalah online!
Penjelasan
sumber
R, 44 byte
yang mengevaluasi fungsi:
Dibandingkan
x
denganc(0,x)
, jadi denganx
menggeser satu posisi ke kanan. Juga sebandingx
denganx[-1]
, jadi satu posisi bergeser ke kiri. Keduanya adalahTRUE
jika ada maksimum di sana.&
untuk mengambil DAN boolean ini. Karena sifat pembungkus vektor R ketika mereka tidak memiliki panjang yang sama, kita harus memotong hasilnya pada panjangx
, yang ditemukan dengan mengambilsum(x|1)
. Kami kemudian pasang di vektor boolean, hanya mengambil indeks sebenarnyax
dan mengembalikannya.Catatan, karena operasi logis ini dilakukan dengan vektor panjang yang tidak sama, R akan mengeluh. Banyak. Tetapi output yang benar akan ada di tengah-tengah peringatan:
sumber
R , 42 byte
Cobalah online!
2 byte lebih pendek dari solusi JAD .
diff
menghitung perbedaan berturut-turut; kemudian hanya menyimpan entri yang lebih besar dari kedua tetangga.sumber
Pyth , 20 byte
Untuk golf ...
Suite uji.
sumber
R , 68 byte
Cobalah online!
sumber
pryr::f(expression)
adalah cara yang lebih singkat untuk mendeklarasikan suatu fungsi daripadafunction(a)expression
.sum(a|1)
adalah jalan pintas untuklength(a)
.PHP , 67 byte
Cobalah online!
sumber
Retina , 51 byte
Cobalah online
sumber
q, 39 byte
sumber
Stax , 10 byte
Jalankan dan debug itu
Ini menghasilkan output sebagai nilai yang dipisahkan baris baru pada output standar.
Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.
Jalankan yang ini
Diperbarui: Baru saja menemukan solusi 9-byte. Akan memperbarui penjelasan nanti:
Stax , 9 byte
Jalankan dan debug itu
sumber
Perl 5
-a
, 37 byteCobalah online!
sumber