Tugas
Diberikan berbagai bilangan bulat, misalnya:
[-1,476,578,27,0,1,-1,1,2]
dan indeks dari array itu (contoh ini menggunakan pengindeksan berbasis 0 , meskipun Anda dapat menggunakan pengindeksan berdasarkan 1 juga.):
index = 5
v
[-1,476,578,27,0,1,-1,1,2]
Kemudian kembalikan angka terdekat yang lebih besar dari elemen pada indeks itu . Dalam contoh, angka terdekat yang lebih besar dari 1 adalah 27 (pada 2 indeks jauhnya).
index = 5
v
[-1,476,578,27,0,1,-1,1,2]
^
Nearest greater number
Output = 27
Asumsi
- Terdekat tidak termasuk pembungkus.
- Program tidak akan pernah diberi array dengan panjang 1 (misalnya;
[55]
). - Anda harus menganggap selalu ada angka lebih besar dari elemen yang diberikan.
- Jika ada 2 angka lebih besar dari elemen pada jarak yang sama, Anda dapat kembali salah satunya .
Pasangan I / O
Input:
Index = 45
Array = [69, 43, 89, 93, 62, 25, 4, 11, 115, 87, 174, 60, 84, 58, 28, 67, 71, 157, 47, 8, 33, 192, 187, 87, 175, 32, 135, 25, 137, 92, 183, 151, 147, 7, 133, 7, 41, 12, 96, 147, 9, 134, 197, 3, 107, 164, 90, 199, 21, 71, 77, 62, 190, 122, 33, 127, 185, 58, 92, 106, 26, 24, 56, 79, 71, 24, 24, 114, 17, 84, 121, 188, 6, 177, 114, 159, 159, 102, 50, 136, 47, 32, 1, 199, 74, 141, 125, 23, 118, 9, 12, 100, 94, 166, 12, 9, 179, 147, 149, 178, 90, 71, 141, 49, 74, 100, 199, 160, 120, 14, 195, 112, 176, 164, 68, 88, 108, 72, 124, 173, 155, 146, 193, 30, 2, 186, 102, 45, 147, 99, 178, 84, 83, 93, 153, 11, 171, 186, 157, 32, 90, 57, 181, 5, 157, 106, 20, 5, 194, 130, 100, 97, 3, 87, 116, 57, 125, 157, 190, 83, 148, 90, 44, 156, 167, 131, 100, 58, 139, 183, 53, 91, 151, 65, 121, 61, 40, 80, 40, 68, 73, 20, 135, 197, 124, 190, 108, 66, 21, 27, 147, 118, 192, 29, 193, 27, 155, 93, 33, 129]
Output = 199
Input:
Index = 2
Array = [4,-2,1,-3,5]
Output = 4 OR 5
Input:
Index = 0
Array = [2124, -173, -155, 146, 193, -30, 2, 186, 102, 4545]
Output = 4545
Input:
Index = 0
Array = [1,0,2,3]
Output = 2
Input:
Index = 2
Array = [3,-1,-3,-2,5]
Output = -1 OR -2
code-golf
array-manipulation
integer
Graviton
sumber
sumber
1; [7,1,-4,2]
2; [3,-1,-3,-2,5]
ini adalah test case yang bagus. Ada angka positif, tetapi hasilnya negatif.Jawaban:
MATL , 10 byte
Ini menggunakan pengindeksan berbasis 1. Cobalah online!
Penjelasan
Pertimbangkan input
[4,-2,1,-3,5]
,3
sebagai contoh.sumber
Jelly , 10 byte
Cobalah online!
sumber
Jelly ,
1112 byte+1 byte - Pembungkus tidak diizinkan.
1-diindeks.
Cobalah online!
Byter 11 sebelumnya (pembungkus indeks), 0-diindeks:
sumber
0
[1,0,2,3]
.3
, yaitu 1 jauhnya jadi, um, ya "terdekat" tidak didefinisikan ...JavaScript (ES6),
5755 byteMengambil array
a
dan indeksi
dalam sintaks currying(a)(i)
.Uji kasus
Tampilkan cuplikan kode
sumber
|
bukan||
?x
ditimpa ketika kondisi pertama terpenuhi.PHP, 106 Bytes
Versi Online
sumber
Haskell , 48 byte
Cobalah online! Kerangka uji dari Ørjan Johansen.
sumber
!!1
sebagai gantinya (cukup ubahInteger
keInt
dalam header).x86-64 Majelis, 40 byte
Terinspirasi oleh menganalisis solusi Johan du Toit dan C 2501 , berikut ini adalah fungsi yang dapat dirakit dengan MASM untuk platform x86-64.
Ini mengikuti konvensi pemanggilan Microsoft x64 untuk parameter yang lewat, sehingga total panjang array dilewatkan
ECX
, posisi yang diinginkan dilewatkanEDX
, dan pointer ke array integer dilewatkan dalamR8
(ini adalah platform 64-bit, jadi itu adalah pointer 64-bit).Ini mengembalikan hasil ("angka terbesar terdekat") di
EAX
.Jika Anda ingin menyebutnya dari kode C, prototipe akan menjadi:
sumber
Ruby , 64 byte
Cobalah online!
sumber
Ohm , 20 byte
Pada dasarnya terjemahan jawaban Ruby ini .
Cobalah online!
Penjelasan akan datang nanti saat saya tidak mengerjakan pekerjaan rumah.
sumber
Haskell , 53 byte
(#)
mengambilInt
dan daftarInt
s atauInteger
s (sebenarnyaOrd
jenis apa pun ), dan mengembalikan elemen daftar.Bagaimana itu bekerja
n
adalah indeks yang diberikan danl
daftar / "array" yang diberikan.i
, mengambil nilai dari 1 ke atas, adalah jarak dari yangn
saat ini sedang diuji.i
, kami memeriksa indeksn-i
dann+i
.x
adalah elemenl
yang diuji. Jika lulus tes itu akan menjadi elemen dari pemahaman daftar yang dihasilkan.!!
bisa memberikan kesalahan di luar batas, sementaradrop
sebaliknya mengembalikan seluruh daftar atau daftar kosong dalam kasus itu. Pola cocok denganx:_
memeriksa bahwa hasilnya tidak kosong.x>l!!n
menguji bahwa elemen kita lebih besar dari elemen pada indeksn
(yang dijamin ada).!!0
pada akhirnya mengembalikan kecocokan / elemen pertama dari pemahaman daftar.Cobalah online!
sumber
Python , 62 byte
Cobalah online!
sumber
Brachylog , 17 byte
Cobalah online!
Penjelasan
sumber
Java (OpenJDK 8) , 98 byte
Cobalah online!
Periksa indeks dalam urutan yang ditentukan oleh jumlah sebagian dari jumlah berikut:
sumber
s=1,
dan,s=-s
, tidak ada gunanya dalam jawaban Anda .. Apakah Anda lupa menghapusnya dari pendekatan lama?C, 69 byte
Argumen pertama adalah argumen masuk / keluar. Output disimpan dalam elemen pertamanya.
Lihat itu berfungsi online .
sumber
R, 59 byte
mengembalikan fungsi anonim. Jika ada dua elemen yang lebih besar pada jarak yang sama, akan mengembalikan yang pertama (indeks lebih rendah).
Cobalah online!
sumber
Pyth - 28 byte
Cobalah
sumber
PHP, 73 byte
closure mengambil indeks dan array berbasis 0 dari argumen. Verifikasi semua kasus uji .
sumber
Pyth, 16 byte
Suite uji .
sumber
C, 110 byte
Cobalah online
sumber
Java, 96 Bytes
Identifier diberi nama seperti jawaban @Leaky Nun. Selain itu, sebagian besar bagian telah disejajarkan pada dasarnya sama: Sebagai perbandingan,
if
telah digantikan olehfor
-condition (mengorbankan titik koma tambahan). Sebuah titik dua telah dihapus dengan memindahkan bagian-tambahan ke kondisi (sehingga tanda kurung dari pernyataan-sebelumnya sebelumnya secara praktis "dipindahkan") - mengubah & menjadi | tidak berdampak pada jumlah karakter.sumber
Clojure, 95 byte
Ini adalah yang terpendek yang bisa saya buat :( Saya juga mencoba bermain-main dengan ini tetapi tidak bisa membawanya ke garis finish:
sumber