Diberikan dua bilangan bulat, hasilkan dua bilangan bulat, dan kemudian rentang di antara keduanya (tidak termasuk keduanya).
Urutan kisaran harus sama dengan input.
Contoh:
Input Output
0, 5 -> [0, 5, 1, 2, 3, 4]
-3, 8 -> [-3, 8, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
4, 4 -> [4, 4]
4, 5 -> [4, 5]
8, 2 -> [8, 2, 7, 6, 5, 4, 3]
-2, -7 -> [-2, -7, -3, -4, -5, -6]
Jawaban:
R ,
393330 byteCobalah online!
Terima kasih untuk byte yang disimpan ke user2390246 dan J.Doe.
sumber
:
operator menggunakan elemen pertama dari kedua args untuk 30 byte05AB1E , 4 byte
Cobalah online!
Penjelasan
sumber
Python 3 ,
5248474241 byteCobalah online!
Gabungan implementasi sebelumnya.
sumber
or-1
untuk menghemat satu byte.Python 2 (Cython) ,
3635 byteTerima kasih kepada @nwellnhof karena bermain golf 1 byte!
Cobalah online!
Python 2 , 37 byte
Terima kasih kepada @JonasAusevicius untuk port ke CPython!
Cobalah online!
sumber
lambda x:x+range(*x+[-cmp(*x)|1])[1:]
. Solusi yang bagusPerl 6 ,
2622 byteCobalah online!
Penjelasan
sumber
Python 2 , 40 byte
Cobalah online!
sumber
-(y<x)|1
. sangat keren tapi saya tidak tahu mengapa itu berhasil! Apakah ada kesempatan untuk menjelaskannya?y<x
periksa apakahy
benar-benar kurang darix
, dan kembaliTrue
jika ya,False
jika tidak. Setelah itu, unary-
diterapkan padanya, yang mengkonversiTrue
ke-1
danFalse
ke0
. Langkah terakhir adalah bitwise ATAU nomor ini dengan1
. Ini jelas meninggalkan1
(0b1
) tidak terpengaruh, dan juga meninggalkan-1
(-0b1
) tidak terpengaruh (sedikit tanda-1
diatur, jadi disimpan seperti itu). Namun, itu tidak mengkonversi0
ke1
, sehinggarange
tidak mengeluh tentang saya menggunakanstep
dari0
.Python 3,
646251 bytelambda a,b:[a,b]+[*range(a+1,b)]+[*range(a-1,b,-1)]
Cobalah online!
Python 2,
5845 bytelambda a,b:[a,b]+range(a+1,b)+range(a-1,b,-1)
Cobalah online!
sumber
a<=b and
dari kedua jawaban+
sebagai gantinyaor
lambda a,b:[a,b,*range(a+1,b),*range(a-1,b,-1)]
Japt, 8 byte
Coba di sini
sumber
JavaScript (ES6), 51 byte
Mengambil input sebagai
(a)(b)
.Cobalah online!
Berkomentar
sumber
Python 2 ,
474140 byteCobalah online!
Ini milik saya, sekarang banyak jawaban Python lainnya telah diposting
-6 byte, terima kasih kepada GB
sumber
a<b or-1
lebih pendek untuk parameter rentang ke-3. Terpendek yang saya dapatkan adalahlambda x,y:[x,y]+range(x+(x<y or-1),y,x<y or-1)
Java 10,
1091081041029362 byteMenggunakan String yang dibatasi ruang:
Cobalah online.
Menggunakan Daftar:
Cobalah online.
(
a<b?++a<b:--a>b
bisa++a<b||(a-=2)>b
untuk byte-count yang sama: Coba online untuk String atau Coba online untuk Daftar .)Jawaban lama (
109108104102101 byte) menggunakan array:-7 byte terima kasih kepada @nwellnhof .
Cobalah online.
Penjelasan:
sumber
a->b->{var L=java.util.stream.IntStream.range(a,b).boxed().collect(java.util.Collectors.toList());L.add(0,b);L.add(0,a);return L;}
(130 bytes)var
, itulah sebabnya saya biasanya meletakkannya di 8, dan yang menggunakanvar
10 (dan yang menggunakanString.repeat
11). :) Lupa memperbaruinya setelah menambahkan jawaban List dan String, harus diperbaiki sekarang. Terima kasih.APL (Dyalog Extended) , 5 byte
Fungsi infiks anonim.
Cobalah online!
,
yang pertama dan terakhir (lit. rangkuman argumen),
dan (lit. disatukan ke)…
jangkauan~
tanpa,
yang pertama dan terakhir (lit. rangkuman argumen)sumber
Haskell, 34 byte
Cobalah online!
sumber
b-1
sebagaib $ (-1)
. Gunakanb- 1
sebagai gantinya.NegativeLiterals
.Jelly , 4 byte
Cobalah online!
Bagaimana itu bekerja
sumber
J , 26 byte
Cobalah online!
Penjelasan:
Kata kerja diad (mengambil argumen kiri dan kanan)
sumber
,,[:}.@}:<.+i.@-@(+*)@-
untuk 23 byte dan tidak ada casing khusus pada pemesanan argumen relatif (lebih tepatnya: itu tersembunyi di dalam signum*
). saya merasa seperti ini bisa turun di bawah 20 tetapi saya lelah.Oktaf , 45 byte
Cobalah online!
sumber
J , 13 byte
Cobalah online!
sumber
i.
dengan argumen negatif.Batch, 107 byte
Mengambil input sebagai argumen baris perintah. Penjelasan:
Keluarkan dua bilangan bulat.
Cobalah rentang naik dan turun.
Ulangi rentang inklusif.
Kecualikan dua bilangan bulat.
Keluarkan nilai saat ini.
sumber
Pyth , 5 byte
Input adalah daftar dua elemen
[input 1, input 2]
,. Coba online di sini , atau verifikasi semua uji sekaligus di sini .sumber
F
bukan.*
pada daftar 2-elemen adalah trik brilian yang saya benar-benar akan gunakan mulai dari sini.Merah , 75 byte
Cobalah online!
sumber
Bersihkan , 49 byte
Cobalah online!
sumber
Ruby ,
3340 byteCobalah online!
Perbaikan sementara, berusaha menemukan ide yang lebih baik
sumber
[4,4]
ini hanya memberikan satu[4]
Python 2 ,
524741 byteCobalah online!
-5 dengan terima kasih kepada @ JoKing
-6 dengan memotong elemen pertama dari jangkauan (ide dicuri dari dan dengan kredit ke @TFeld)
Versi non-lambda ...
Python 2 ,
514947 byteCobalah online!
-2 dengan terima kasih kepada @ JoKing
sumber
APL (Dyalog Classic) , 29 byte
Cobalah online!
Port
J
solusi sayasumber
PHP (102 byte)
Bak pasir
Sayangnya (untuk golf) PHP memiliki nama fungsi yang agak verbose, yang berkontribusi banyak pada panjangnya. Tapi ide dasarnya adalah membuat rentang, lalu lepas elemen terakhir dan menjahitnya kembali di offset 1. Untuk
4,4
contoh saya harus menambahkancount($r=range($a,$b))>1?...:$r=[$a,$b];
yang menambahkan sedikit, dan sayangnyaarray_splice()
adalah dengan referensi yang membuat saya lebih bersemangat. byte ($r= and a ;
). Semua karena "kasus tepi", lol.Selamat menikmati!
sumber
function t($a,$b){$o=array($a,$b);for($i=$a+1;$i<$b;$i++)$o[]=$i;print_r($o);}
function t($a,$b){echo $a.$b;for($i=$a+1;$i<$b;$i++)echo $i};
Clojure , 61 byte
Fungsi anonim yang mengambil 2-vektor sebagai input dan mengembalikan daftar.
Cobalah online!
Penjelasan
sumber
D , 85 byte
Cobalah online!
Port jawaban C ++ @ HatsuPointerKun ke D.
sumber
TI-BASIC,
3534 byte-1 byte dari Misha Lavrov
sumber
1-2(A>B
dengancos(π(A>B
.seq(
tidak akan bekerja untuk input di manaA
danB
itu sama, sayangnya :(seq(
, jadi saya tidak lagi yakin itu bahkan lebih kecil. Tetap saja,cos(
triknya akan membantu.Arang , 15 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Cetak input pada baris yang berbeda.
Cetak rentang naik, jika ada.
Cetak reverse reverse ascending reverse, jika ada.
sumber
Dart ,
8584 byteCobalah online!
>=
ke>
sumber