Tantangan:
Memasukkan:
Dua parameter integer a
dan b
(di mana a<b
dan perbedaannya minimal 2)
Keluaran:
Keluarkan atau kembalikan teks ini, di mana a
dan b
diisi:
(a,b) = ]a,b[ = {a<x<b} = {a<x&&x<b} = a+1..b-1
[a,b) = [a,b[ = {a<=x<b} = {a<=x&&x<b} = a..b-1
(a,b] = ]a,b] = {a<x<=b} = {a<x&&x<=b} = a+1..b
[a,b] = [a,b] = {a<=x<=b} = {a<=x&&x<=b} = a..b
Aturan tantangan:
- I / O fleksibel. Dapat dicetak ke STDOUT, dikembalikan sebagai string / karakter-array, dll. Dapat dimasukkan sebagai dua bilangan bulat, desimal, string (tidak yakin mengapa karena Anda perlu menghitung
a+1
danb-1
, tetapi jadilah tamu saya ..), dll. - Setiap jumlah garis depan dan / atau trailing diperbolehkan, dan sejumlah spasi trailing dan / atau memimpin untuk setiap baris diizinkan.
- Spasi di tanda sama dengan (termasuk yang untuk menyelaraskannya di kolom yang sama) adalah wajib, spasi di antara karakter lain tidak diperbolehkan.
a+1
danb-1
diganti dengan nilai yang benar setelah perhitungan ini.- Anda tidak diperbolehkan untuk menggunakan
≤
bukan<=
. - Anda tidak diperbolehkan untuk menggunakan
&
bukan&&
. - Anda diizinkan untuk mengeluarkan angka-angka dengan
.0
(asalkan konsisten, dan tidak lebih dari satu nol desimal). - Anda dapat mengasumsikan
a
paling sedikit 2 lebih rendah darib
(agar(a,b)
benar). - Garis-garis harus berupa output dalam urutan yang ditunjukkan.
Contoh:
Input: a=-5, b=10
Keluaran:
(-5,10) = ]-5,10[ = {-5<x<10} = {-5<x&&x<10} = -4..9
[-5,10) = [-5,10[ = {-5<=x<10} = {-5<=x&&x<10} = -5..9
(-5,10] = ]-5,10] = {-5<x<=10} = {-5<x&&x<=10} = -4..10
[-5,10] = [-5,10] = {-5<=x<=10} = {-5<=x&&x<=10} = -5..10
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa saja'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program lengkap. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, silakan tambahkan penjelasan jika perlu.
PS: Bagi mereka yang telah melihat tantangan ini di Sandbox ketika itu masih merupakan tantangan kompleksitas-kolmogorov dengan a
dan b
hard-coded, saya telah mengubahnya menjadi tantangan input untuk mencegah membosankan jawaban kode yang dikodekan dan dikodekan seperti yang biasanya kita lihat dengan Tantangan KC.
a=5, b=6
output masih(5,6) = ... = 6...5
?a
danb
akan selalu setidaknya 2 terpisah. Saya akan mengedit tantangannya.Jawaban:
Stax , 74 byte
Jalankan dan debug itu
Ini sangat menggunakan template string stax. Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.
Jalankan yang ini
sumber
JavaScript (ES6),
184182181180 byteMengambil input dalam sintaks currying
(a)(b)
. Mengembalikan array 4 string.Cobalah online!
Bagaimana?
Untuk setiap baris k dengan 1 ≤ k ≤ 4 , kita mulai dengan templat berikut:
dan ganti setiap angka desimal n pada posisi i sesuai dengan tabel berikut:
sumber
Python 2 ,
225203195 byteCobalah online!
sumber
Python 2 , 187 byte
Cobalah online!
sumber
Java (JDK 10) , 251 byte
Cobalah online!
Kredit
sumber
.replace
.Perl 5 , 181 byte
Saya pikir ini akan berhasil jauh lebih pendek ...
Cobalah online!
Penjelasan
Awalnya ini menggunakan
printf
format string, tetapi hanya memilikis
dand
lebih pendek bila dikombinasikan dengans///
.Pertama format string dibangun ke dalam
$_
dan empat kali lipat, maka semuas
s diganti dengan braket yang sesuai<
,,<=
atau spasi, tergantung pada indeks penggantian. Saya berharap untuk menghemat lebih banyak byte dengan duplikasi 5 karakter terakhir dari masing-masing blok, tetapi ini hanya menghemat 2 byte. String yang dihasilkan dibagi menjadi elemen ruang,<=
atau karakter tunggal.Akhirnya semua
d
s diganti dengan nomor yang diinginkan yang disesuaikan berdasarkan indeks penggantian saat ini melalui kunci hash.sumber
JavaScript,
190189 byteCobalah online
sumber
m4 , 194
Sepertinya pekerjaan untuk prosesor makro. Tidak yakin apakah m4 memenuhi standar kami untuk bahasa pemrograman. Itu memang memiliki kemampuan looping dan eval aritmatika, jadi saya menganggap itu dekat dengan tanda.
Ini adalah pandangan non-sepele pertama saya di m4, jadi saya curiga ada lebih banyak peluang golf yang saya lewatkan.
Input dilewatkan menggunakan
-D
definisi makro di baris perintah. Tidak yakin apakah ada yang perlu ditambahkan ke skor untuk ini, sejauh yang saya tahu ini adalah satu-satunya cara untuk lulus parameter secara bermakna:Cobalah online .
Terima kasih @Dennis karena menambahkan m4 ke TIO begitu cepat!
sumber
-D
argumen itu baik-baik saja. Dalam uraian tantangan saya, saya menyatakan bahwa I / O sepenuhnya fleksibel, jadi apakah Anda mengambil input sebagai STDIN, parameter fungsi, argumen baris perintah program, flag kompiler, membaca file, atau apa pun metode input lain yang dapat Anda pikirkan sepenuhnya terserah kamu.Python 2 ,
277199193189 byteCobalah online!
sumber
2*('{%d<%s<%s%d} %s= '%(a,e*x+'%sx',e[y:],b,i/2*' '))%('','x&&')
->2*('{%d<%s%%sx<%s%d} %s= '%(a,e*x,e[y:],b,i/2*' '))%('','x&&')
menghemat dua :)Excel, 399 byte
Tidak ada yang menarik di sini.
sumber
C (gcc) , 224
237byteCobalah online!
Memindahkan "<[=]" ke dalam format string memungkinkan saya untuk menghapus array sama sekali. Juga, pindah
printf()
kefor
loop menyimpan titik koma.Jawaban asli
Cobalah online!
Tidak ada yang penting di sini: Saya menggunakan trik biasa untuk mencukur ukuran fungsi (mengangkat
int
autos ke dalam header fungsi, menggunakan gaya K&R, mengindeks ke dalam konstanta string.) Menyimpan {"<=", "<"} ke dalam array terbukti lebih efisien ukuran daripada memasukkan specifier format untuk tantangan ini karena digunakan lebih dari sekali.sumber
Javascript,
273258232 byteTerima kasih Kevin Cruijssen karena telah menyelamatkan saya 15 byte!
Cobalah online
Terima kasih untuk TFeld karena memberi saya ide itu, menghemat sekitar 60 byte dari jawaban asli saya.
Tidak Disatukan:
Javascript (jawaban asli), 340 byte
sumber
{a<=x&&\nx<=b}
seharusnya tidak ada di sana, dan Anda kehilangan yang pertama(a,b) =
. Sedangkan untuk bermain golf: alih-alih waspada, Anda bisa mengembalikan hasilnya.(m)=>
bisam=>
.(e,f)=>
bisae=>f=>
. Dan Anda dapat menggunakang
secara langsung bukan menciptakanlet g=
:m=>{return{a:e,b:f,c:e+1,d:f-1}[m]}
. Cobalah secara online 258 byte . Dan mungkin lebih bisa(m)->
untukm->
;(e,f)->
kee->f->
, danvar g=new int[]{...}return g[m]
kereturn new int[]{...}[m]
. ;) Juga, saya sudah aktif di SO ini selama lebih dari dua tahun sekarang, jadi saya telah melihat jawaban JS menggunakan hal-hal semacam ini sebelumnya juga.Retina , 216 byte
Cobalah online! Penjelasan:
Membangun sebagian besar hasil.
Jika variabel terlibat dalam ketidaksetaraan longgar, maka nilainya inklusif, sehingga kami dapat menghapus placeholder.
Konversikan nilainya menjadi unary dan tambahkan 2.
Hapus placeholder untuk ketidaksamaan rendah yang ketat atau ketimpangan atas ketat negatif. Itu masih memiliki 2 ditambahkan, tetapi 1 akan dikurangi nanti, memberikan hasil yang diinginkan.
Kurangi 2 dari ketidaksetaraan ketat non-nol lainnya, pulihkan nilai aslinya, yang darinya 1 akan dikurangkan nanti.
Ubah ketimpangan atas
0
menjadi-1
.Kurangi 1 dari ketimpangan ketat yang tersisa dan konversikan ke desimal.
Memperbaiki kasing lain.
sumber
Python 3, 180 byte:
penjelasan
Pada dasarnya membangun f-string yang dievaluasi dalam pemahaman daftar.
%
Interpolasi string gaya lama digunakan untuk menunda mengevaluasi ekspresi sampai f-string dievaluasi.Bagian pertama dari string, 'f "', akan menjadi awalan untuk f-string.
Bagian kedua dari string membangun format string untuk dua ekspresi interval pertama.
%r
digunakan untuk menyimpan agar tidak perlu mengutip dalam format, yaitu"{%r[j]}"
sama dengan"{'%s'[j]}"
. Ketika f-string dievaluasi, braket yang benar dipilih.Bagian ketiga dari string membangun dua ekspresi interval berikutnya.
Bagian terakhir memformat bagian "a..b" dari f-string.
F-string yang dirakit terlihat seperti:
f"{'(['[j]}{a},{b}{')]'[i]} = .... = {a+j}..{b-i}"
Ketika f-string dievaluasi, semua ekspresi dalam kurung
{}
digantikan oleh nilainya. Jadi,{a}
akan diganti dengan nilaia
, dan{'(['[j]}
digantikan oleh(
jika j adalah 0 atau[
jika j adalah 1.sumber
SOGL V0.12 , 110 byte
Coba Di Sini!
sumber
Python 3, 248 byte
Cobalah online!
sumber