Berkat komunitas PPCG, Santa telah berhasil membuat ulang semua hadiahnya dan setelah jalur perakitan, hadiah kini siap untuk dipindahkan ke dok transportasi!
Masing-masing dermaga pengangkut Santa hanya menampung berbagai ukuran saat ini karena kereta luncur khusus untuk ukuran tertentu (lebih ringan dan akan sia-sia, lebih berat dan kereta tidak akan mampu menangani beban). Karena itu, ia membutuhkan Anda untuk membantunya mengambil hadiah dan mengurutkannya ke dermaga transportasi yang benar.
Tantangan
Diberikan daftar dan kisaran dermaga transportasi, secara teratur mengatur hadiah ke dalam urutan yang benar.
Mari kita ambil contoh ini: hadiahnya [5, 3, 8, 6, 2, 7]
dan rentang docknya [[1, 5] and [6, 10]]
.
Hadiah 5
, 3
dan 2
masuk ke dermaga pertama dan hadiah 8
, 6
dan 7
masuk ke dermaga kedua. Ini dapat ditampilkan sebagai [[5, 3, 2], [8, 6, 7]]
. Daftar ini akan lebih dekat untuk diurutkan daripada input, tetapi stably
berarti bahwa di dalam setiap dermaga, urutan hadiah harus sama dengan urutan input (jika tidak, Anda bisa mengurutkan seluruh daftar).
Hasil akhir Anda untuk kasus ini adalah [5, 3, 2, 8, 6, 7]
(sebagai daftar datar).
Spesifikasi Format
Anda akan diberikan masukan sebagai daftar dari bilangan bulat dan daftar rentang dalam format yang wajar (misalnya, rentang untuk kasus di atas dapat diberikan sebagai [[1, 5], [6, 10]]
, [1, 5, 6, 10]
, atau [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
). Output Anda harus berupa daftar datar bilangan bulat dalam format apa pun yang wajar.
Input dapat berisi nilai duplikat; dalam hal ini, Anda harus mengembalikan semua instance dari mereka. Semua ukuran saat ini akan berada tepat dalam satu rentang ukuran, dan Anda dapat mengasumsikan bahwa rentang tidak akan pernah tumpang tindih. Mungkin ada kesenjangan dalam rentang selama semua ukuran yang ada tercakup.
Aturan
- Celah Standar Berlaku
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang
- Tidak ada jawaban yang akan diterima
- Anda dapat mengasumsikan bahwa tidak akan ada rentang kosong (
[7, 4]
akan tidak valid karena rentang naik)
Uji Kasus
[1, 2, 3, 4, 5, 6, 7] ; [[1, 3], [4, 7]] => [1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7] ; [[4, 7], [1, 3]] => [4, 5, 6, 7, 1, 2, 3]
[7, 3, 5, 4, 6, 1, 2] ; [[1, 3], [4, 5], [6, 7]] => [3, 1, 2, 5, 4, 7, 6]
[4, 7, 6, 3, 5, 2, 1] ; [[1, 4], [5, 7]] => [4, 3, 2, 1, 7, 6, 5]
[1, 1, 3, 3, 6, 4, 7] ; [[1, 4], [6, 7]] => [1, 1, 3, 3, 4, 6, 7]
Catatan: Saya mendapat inspirasi untuk seri tantangan ini dari Advent Of Code . Saya tidak memiliki afiliasi dengan situs ini
Anda dapat melihat daftar semua tantangan dalam seri ini dengan melihat bagian 'Tertaut' dari tantangan pertama di sini .
sumber
Jawaban:
Haskell , 26 byte
Cobalah online! Contoh penggunaan:
[1,2,3,4,5,6,7] # [[1,2,3],[4,5,6,7]]
hasil[1,2,3,4,5,6,7]
.sumber
Jelly , 4 byte
Cobalah online!
Mengambil input sebagai daftar sekarang, rentang penuh.
sumber
fþF
berfungsi di Jelly, selama 3 byte . Penghargaan untuk Adnan .Mathematica, 39 byte
-22 byte dari JungHwan Min
-4 byte dari Martin
Cobalah online!
sumber
Range
semuanya dengan hanya mengambil rentang yang diperluas sebagai input.Pyth , 5 byte
Coba di sini!
Pyth , 10 byte
Coba di sini!
Bagaimana mereka bekerja
Mengambil dermaga pertama, dengan semua bilangan bulat dalam rentang, dan kemudian hadiah di baris baru.
sumber
Python 2 ,
4946 byteterima kasih kepada @HyperNeutrino untuk -3 byte
Cobalah online!
Tidak disatukan
Cobalah online!
sumber
05AB1E , 3 byte
Cobalah online! (terima kasih kepada Adnan karena memberi tahu saya
δ
ada, -1 byte)Bagaimana itu bekerja
sumber
€Ã˜
tampaknya tidak bekerja.€Ã˜
gagal adalah karenaÃ
mengambil dua argumen, dan€
mengharapkan fungsi dengan satu argumen, jadi ia mengembalikannya[[]]
(saya pikir itu bug), jadi kemudian˜
akan rata, kembali[]
.ε
Namun, bekerja secara berbeda. Untuk setiap elemen dari item teratas, ia membuat stack baru dan kemudian mengembalikan bagian atas dari setiap stack baru, jadi ketika tidak ada cukup item di dalamnya untuk suatu fungsi, dibutuhkan input implisit sebagai gantinya.δØ
yang Anda cari?Retina ,
3736 byteCobalah online! Mengambil input sebagai daftar hadiah di baris pertama dan daftar rentang di baris kedua; tautan menyertakan header untuk membagi kasus uji menjadi format yang diinginkan. Sunting: Disimpan 1 byte berkat @MartinEnder. Penjelasan: Tahap pertama cocok dengan hadiah dan menemukan dermaga yang cocok. Hadiah diurutkan berdasarkan substring dari awal baris ke
[
, sehingga mengelompokkan hadiah berdasarkan dock. Tahap kedua kemudian menghapus dok.sumber
Mintalah , 3 byte
Cobalah online!
Bagaimana itu bekerja
sumber
APL + WIN, 29 byte
Meminta input layar untuk bilangan bulat dan rentang. Bilangan bulat sebagai daftar datar dan rentang sebagai vektor bersarang, misalnya kasus 3:
Penjelasan:
sumber
C ++, 127 byte
Ambil input sebagai dua array yang diwakili oleh pasangan pointer
[start, end)
.Cobalah online!
sumber
[&](int a)->int{a=a>=
bukannya[&](int a){return a>=
tidak menyimpan byte. Saya#import<algorithm>
bisa#import<regex>
, setidaknya di TIO. Saya menemukan bahwa setelah mencari secara menyeluruh ("pencarian biner manual") semua tajuk yang tercantum di halaman ini dan yang ini adalah yang terpendek. / Juga, +1 dari saya.J, 15 byte
Mengambil input sebagai argumen kiri dan rentang sebagai kanan argumen . Rentang tersebut adalah daftar kotak dari rentang lengkap.
mis. untuk rentang pertama:
Cobalah online!
Penjelasan
sumber
J ,
2624 byte2 byte berkat cole
Bagaimana itu bekerja:
Argumen kiri memegang rentang.
-&1 0"1@[
mengurangi batas bawah setiap rentang sebesar 1I."1]
memeriksa rentang mana yang cocok untuk setiap hadiah1=
apakah itu dalam kisaran yang benar]<@#~
salinan dan kotak hadiah yang berada dalam kisaran saat ini;
- meruntuhkan (unboxing)Cobalah online!
sumber
(0 4,:_3 _1) f _2 _1 0 1 2
)R ,
113485541 byteVersi sebelumnya tidak menyortir objek dengan benar ketika dermaga tidak dalam urutan meningkat.
Cobalah online!
Membawa
D
sebagai daftar vektor rentang, yaitu,list(4:7,1:3)
akan[[4, 7], [1, 3]]
.Mungkin jawaban naif yang seharusnya saya sampaikan di masa lalu; mencetak ke stdout.
sumber
Japt , 6 byte
Cobalah
Penjelasan
Input implisit array
U
(hadiah) dan 2d-arrayV
(rentang penuh). Sortir (ñ
) hadiah dengan melewatkannya melalui fungsi (@
) yang mendapatkan indeks elemen pertama (b
) diV
yang berisi (ø
) sekarang hadir (X
).sumber
Python 2,
9785 byte-11 byte dari Ovs
-1 byte dari Mr. Xcoder
Cobalah online!
Urutkan daftar menggunakan lambda rekursif sebagai kuncinya. Penjelasan
segera hadir ™ dibawah.Penjelasan:
sumber
Javascript ES6,
534745 byteCobalah online!
sumber
PowerShell , 37 byte
Cobalah online!
Dibawa
$a
sebagai array literal dari hadiah dan$b
sebagai array array, yang masing-masingnya adalah rentang penuh (misalnya,@(1,2,3,4,5)
bukan@(1,5)
). Kami kemudian mengulangi setiap item$b
dengan|%{...}
. Di dalam, kita perlu mengatur helper$i
menjadi item saat ini, kemudian menggunakanWhere-Object
klausa$a
untuk menarik hanya item-item yang ada-in
saat ini$b
array .Mereka dibiarkan di jalur pipa dan hasilnya tersirat. Karena perilaku default
Write-Output
menyisipkan baris baru di antara elemen array, itulah yang kami dapatkan. Berikut adalah versi yang sedikit diubah yang-join
diedit bersama-sama melalui koma alih-alih baris baru, hanya untuk menunjukkan perbedaan.sumber
Merah , 73 byte
Cobalah online!
sumber
C # (.NET Core) , 50 + 18 byte
+18 byte dari
Dibutuhkan koleksi untuk hadiah dan koleksi array untuk dermaga.
Cobalah online!
sumber
Windows Batch (CMD),
9079 byteGunakan format end-of-line LF. Setiap karakter end-of-line dapat dihitung sebagai 1 byte.
Tidak ada TIO (karena TIO menggunakan Linux)
Ambil daftar dari argumen baris perintah, dan berkisar dari
stdin
.Misalnya, jika program dijalankan (anggap file tersebut bernama
r1.cmd
)dan dengan
stdin
input, program akan menampilkan ke
stderr
dengan format(sesuai dengan urutan output
3 1 2 5 4 7 6
)Penjelasan:
Kode tidak digabungkan (dengan interaksi diaktifkan jika
true
dilewatkan sebagai argumen 1; meminta daftar daristdin
, gunakangoto
untuk menghindari stack overflow - sebenarnya saya baru saja mencoba menjalankan skrip yang menyebut dirinya lebih dari 70000 kali tanpa melihat masalah, jadi saya rasa itu harus cukup aman):sumber
(%*)
. Setelah melakukan ini, Anda dapat menggunakan%0 %*
untuk memulai kembali skrip setelah memproses setiap rentang. (Saya benar-benar berakhir dengan jumlah byte yang lebih besar karena saya menggunakan versi interaktif Anda dengan sentuhan yang bagus&&
,exit/b
danecho
sebagai titik awal saya.)%1
tetapi tanda kutip"
membuat ruang tidak berfungsi sebagai pemisah, jadi saya akhirnya menggunakanset /p
.$~1
...Bersih , 59 byte
Cobalah online!
Membawa dua daftar, mengembalikan daftar.
sumber
Bahasa Wolfram (Mathematica) , 34 byte
Cobalah online!
adalahFunction
operator.Ini adalah fungsi kari tanpa nama yang harus disebut pertama dengan daftar rentang dermaga (diperluas) dan kemudian dengan daftar hadiah. Misalnya, jika Anda menetapkan fungsi ke
f
:Daftar hadiah hanya diurutkan berdasarkan posisi tingkat pertama dari nilai dalam daftar rentang dermaga. Kita perlu membungkus
SortBy
fungsi dalam daftar untuk membuat semacam itu stabil.sumber
Julia 0,6 ,
3130 byteCobalah online!
Mendefinisikan ulang
%
operator dan memetakan persimpangan yang ditetapkan di∩()
atas dermaga yangd
menjaga ketertiban dan multiplisitas imput pertama, daftar hadiahp
.vcat
dengan input diperluas ke beberapa argumen via...
ratakan array bersarang yang dihasilkan.Edit, -1Byte: Daftar pemahaman alih-alih
map()
.sumber