Memasukkan
Dua daftar A
dan B
bilangan bulat tidak negatif.
Keluaran
Entah 1
,, 0
atau -1
, tergantung pada apakah A
lebih besar dari, sama dengan, atau lebih kecil dari yang B
berkaitan dengan urutan leksikografis memutar seperti yang didefinisikan di bawah ini. Jika mau, Anda bisa mengganti 1
, 0
dan -1
dengan tiga nilai konstan lainnya.
Urutan leksikografis yang bengkok adalah seperti urutan leksikografis biasa, di mana Anda membandingkan elemen daftar dengan elemen, dan memutuskan urutannya pada indeks yang berbeda pertama. Namun, dalam versi bengkok kami menggunakan pemesanan berbeda untuk bilangan bulat tidak negatif pada setiap indeks. Yaitu, pada setiap indeks i
(pengindeksan dimulai dari 1
), urutan i
bilangan bulat non-negatif pertama (dari 0
ke i-1
) dibalik, dan mereka dipindahkan di atas semua angka lainnya. Selain itu, "elemen yang hilang" yang menandakan satu daftar lebih pendek dari yang lain dipindahkan langsung di bawah ini i-1
. Secara visual, urutan pada indeks i
adalah
i < i+1 < i+2 < i+3 < ... < [missing element] < i-1 < i-2 < i-3 < ... < 2 < 1 < 0
Perhatikan bahwa yang pertama ...
menunjukkan angka yang tak terhingga banyaknya. Ini berarti bahwa daftar berikut berada dalam urutan menaik sehubungan dengan urutan leksikografis memutar:
[3,2,3,4]
[3,2,3,5]
[3,2,3,10]
[3,2,3,1341]
[3,2,3]
[3,2,3,3]
[3,2,3,2]
[3,2,3,1]
[3,2,3,0]
Aturan
Anda dapat memberikan program atau fungsi lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan.
Uji Kasus
Output 1:
[0] []
[] [1]
[] [1,2,1,2]
[2,1] [1,1]
[0,1,2] [0,2,1]
[3,0] [3,1]
[3,1] [3]
[2] [2,2]
[2] [2,23]
[2,24] [2,23]
[2,1] [2,23]
Output 0:
[] []
[0] [0]
[1,1] [1,1]
[2,1,2] [2,1,2]
Output -1:
[1,2,1,1,2] [1,2,1,1,1]
[1,2,1,1,5] [1,2,1,1,4]
[1,2,1,1,5] [1,2,1,1]
[1,2,1] [1,2,1,1]
[1,2,1,1,5] [1,2,1,1,6]
[1,2,1,1,6] [1,2,1,1,7]
Jawaban:
CJam - 57
Ya itu masih sangat panjang ...
Cobalah online
Penjelasan singkat:
Kode output 0 jika array adalah sama dalam arti tradisional, selain itu mengkonversi setiap item dari masing-masing array ke array 2 elemen: [0 a i ] jika i > i (0-based), [1 terserah] jika i hilang, dan [2 -a i ] jika a i <= i. Dalam prosesnya, array yang lebih pendek juga diperluas ke ukuran yang lebih besar. Kemudian array yang diubah dibandingkan secara leksikografis dan hasilnya disesuaikan dengan -1/1.
sumber
Python 2, 76 byte
Ini menggantikan setiap bilangan bulat di kedua daftar dengan 2-tupel ke akun untuk pemesanan bengkok. Builtin Python 2
cmp
melakukan sisanya.Pemakaian:
sumber
[3,2,3,1341] < [3,2,3] < [3,2,3,0]
?(0,)
ke akhir setiap daftar, yang lebih besar dari apa pun(-1, x)
dan kurang dari(i-x, x)
kapani-x >= 0
.Perl, 74
Tanpa fungsi manipulasi array yang baik, perl bukanlah alat yang optimal untuk pekerjaan itu, tetapi berfungsi.
Ujilah aku .
sumber
J, 95 byte
(Bukan super pendek tapi apa pun. Jelas golf.)
Lulus semua kasus uji. (Set kasus uji hebat! Terima kasih!)
Metode:
m=.>:>./x,y
).(],m$~>&#*-&#
(|+(1+m)*0>:*)@(i.@#-~])
((m+#x,y)&#.)
*@-&
sumber
Mathematica, 65
Pemakaian:
sumber