Kami memiliki banyak sumbu horizontal untuk angka, tapi jujur saya pikir mereka agak membosankan. Tugas Anda hari ini adalah membuat saya bagian dari sumbu diagonal antara dua bilangan bulat non-negatif yang diberikan sebagai input.
Bagaimana cara membuat sumbu diagonal?
Mari kita ambil contoh, dengan input
0, 5
. Sumbu kami akan terlihat seperti ini:0 1 2 3 4 5
Namun, sumbu kami harus terlihat bagus untuk angka yang memiliki lebih banyak digit juga! Jika inputnya, misalnya
0, 14
, sumbu baru harus:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Idenya adalah bahwa digit pertama dari angka berikutnya pada sumbu harus selalu ditempatkan tepat setelah digit terakhir dari angka sebelumnya. Untuk lebih memahami ide tersebut, berikut adalah contoh lain dengan
997, 1004
:997 998 999 1000 1001 1002 1003 1004
Aturan
Anda dapat berasumsi bahwa input dalam urutan naik atau turun (Anda dapat memilih antara
5,3
dan3,5
).Anda juga dapat mengasumsikan bahwa perbedaan antara kedua bilangan bulat lebih rendah dari 100.
Anda mungkin memiliki baris baru terdepan atau ruang terdepan yang konsisten (di setiap baris). Ruang tambahan / baris baru juga baik-baik saja.
Anda dapat mengambil input dan memberikan output dengan cara standar apa pun .
Ini adalah kode-golf , jadi kode terpendek dalam byte di setiap bahasa menang!
Kasus Uji Lainnya
1, 10
:1 2 3 4 5 6 7 8 9 10
95, 103
:95 96 97 98 99 100 101 102 103
999999, 1000009
:999999 1000000 1000001 1000002 1000003 1000004 1000005 1000006 1000007 1000008 1000009
Jawaban:
05AB1E ,
876 byteTerima kasih untuk Magic Octopus Mm karena menghemat satu byte!
Entah bagaimana itu berhasil, tapi jujur saya tidak tahu kenapa.
Kode
Menggunakan penyandian 05AB1E . Cobalah online!
Penjelasan
sumber
.O = pop a,b push connected_overlap(b) (deprecated)
- Oh, kurasa?.O
sangat buggy dan usang selama lebih dari setahun jadi saya tidak tahu apa yang berhasil dan yang tidak. Saya bersumpah bahwa saya perluÎ
, tetapi tiba-tiba itu tidak lagi menjadi masalah (?). Terima kasih! :)Î
itu diperlukan untuk mengurangi jumlah maksimum ruang memimpin ke 1.Python 2 , 43 byte
Menggunakan tab vertikal untuk membuat efek tangga. Cara
\v
yang diberikan tergantung pada konsol, sehingga mungkin tidak berfungsi di mana-mana (seperti TIO).sumber
\x0b
dalam kode Anda untuk menyimpan byte?\\v
dan diganti dengan\x0B
yang menunjukkanVT
karakter sebagai pengganti untuk mencetak skor Anda dapat memposting hexdump yang dapat dibalik (xxd
atau sesuatu) atau hanya menyatakan bahwa: "\v
adalah tab vertikal harfiah", saya pikir itu akan adil. Semoga itu bisa membantu!Arang ,
98 byteCobalah online!
Tautan adalah ke versi kode yang verbose. Masukan dalam urutan menaik.
sumber
R,
706961 byteFungsi yang mengambil variabel awal dan akhir sebagai argumen. Simpulkan urutannya, dan cetak setiap elemen, tambahkan spasi yang cukup.
F
dimulai sebagaiFALSE=0
, dan selama setiap iterasi, jumlah karakter untuk nilai tersebut ditambahkan padanya.F
menentukan jumlah ruang yang dicetak.Cobalah online!
-8 byte terima kasih kepada @Giuseppe
sumber
scan()
dua kali dapat dikurangi menjadi 67 bytefor(i in scan():scan()){cat(rep(' ',F),i,'\n',sep='');F=F+nchar(i)}
.F=0;for(i in scan():scan()){cat(rep(' ',F),i,'\n',sep='');F=F+nchar(i)}
(71 byte)nchar
.\n
baris baru yang sebenarnya juga berfungsi, dan itu tidak menghabiskan biaya dua byte.cat
, tetapi saya tidak bisa berpikir jernih dan mencari tahu untuk beberapa alasan.C #,
908985 byteDisimpan 1 byte berkat @LiefdeWen.
Disimpan 4 byte berkat @auhmaan.
Cobalah online!
Versi Lengkap / Terformat:
sumber
i<=e
toe>i
i
dan menggunakan kembali sebagais
gantinyaPython 2 ,
5854 byteCobalah online!
sumber
Mathematica, 59, byte
memasukkan
-3 byte @JungHwanMin
bermasalah dengan 0 diperbaiki (lihat komentar untuk detail)
thanx ke @ngenisis
sumber
Spacings -> 0
jika Anda ingin ini sesuai karakter.Grid[(DiagonalMatrix@Range[1+##]/. 0->""+1)-1,Spacings->0]&
adalah cara terpendek yang dapat saya temukan untuk memperbaiki masalah ituJelly , 9 byte
Cobalah online!
sumber
Mathematica, 48 byte
karena ada begitu banyak jawaban, saya pikir ini harus dimasukkan
memasukkan
keluaran
sumber
C,
1661349582 BytesJawaban Baru
Sama seperti fungsi bukan sebagai keseluruhan program.
Terima kasih kepada Falken untuk membantu mengurangi 13 Bytes (dan memperbaiki kesalahan)!
Terima kasih kepada Steph Hen yang telah membantu mengurangi 12 Bytes!
Terima kasih kepada Zacharý untuk bantuan menjatuhkan 1 Byte!
Jawaban Lama
Menyingkirkan int sebelum main dan mengubah const char * v [] menjadi char ** v dan menyingkirkan return 0;
Ini adalah pertama kalinya saya bermain golf dan saya ingin mencoba sesuatu dalam C. Tidak yakin apakah saya memformat ini dengan benar, tetapi saya senang membuatnya!
Penjelasan
Pemakaian
sumber
argc
danargv
menjadi satu variabel huruf.int s=0
ke for loop, seperti padafor(int s=0;a<=b;a++)
.int i=s;while(i--)
bukannyafor(int i=0;i<s;i++)
untuk loop dalam akan menghemat dua byte.C ++,
167165 byte-2 byte terima kasih kepada Zacharý
sumber
int m=0,i=l,j
kefor
loop pertama untuk menyimpan byte? 2. Bisakah Anda mengubahr+=t;r+=10
ker+=t+10
? 3. Saya mengalahkan seseorang, yay.r+=t+=10
tetapi tidakr+=t+10
, itu memberi saya kesalahanr+=t+=10
apakah berhasil? Bukankah itu memengaruhit.size()
?++i
kestd::to_string(i)
sebagaistd::to_string(i++)
menyimpan satu byte lebih?APL (Dyalog) ,
2524 byte-1 terima kasih kepada Zacharý .
Diasumsikan
⎕IO←0
untuk penghitungan berbasis nol. Mengambil argumen batas bawah sebagai argumen kiri dan argumen batas atas sebagai argumen kanan.Cobalah online!
(
...)
terapkan fungsi diam-diam berikut di antara argumen:-
kurangi bagian atas bawah dari batas atas1-
kurangi itu dari satu (yaitu 1 + ∆)⊣+∘⍳
batas bawah kiri ditambah bilangan bulat 0 melaluinya⍕¨
format (stringify) masing-masing{
...}
terapkan anonim berikut untuk itu (diwakili oleh ⍵):≢¨
panjang masing-masing (angka)+\
jumlah kumulatif-
meniadakan⍵↑⍨¨
untuk setiap nomor yang dirangkai, ambil banyak karakter dari ujungnya (pad dengan spasi)↑
mencampur daftar string ke dalam matriks karaktersumber
+-⍨
jadi--
?Retina ,
8178 byteCobalah online! Mengambil input sebagai daftar dua bilangan bulat yang dipisahkan baris baru. Sunting: Disimpan 3 byte dengan mencuri kode ekspansi-rentang dari jawaban saya ke Apakah kita berbagi cluster utama? Penjelasan:
Ubah kedua input menjadi unary.
Sementara dua elemen terakhir (a, b) dari daftar berbeda lebih dari 1, gantikan dengan (a, a + 1, b). Ini memperluas daftar dari tuple menjadi range.
Konversi kembali ke desimal dalam rangkap dua.
Ubah salinan duplikat menjadi spasi.
Secara kumulatif jumlah ruang dari setiap baris ke baris berikutnya.
sumber
Pyth ,
1413 byteCobalah online!
sumber
LOGO , 53 byte
Tidak ada "Coba online!" tautan karena semua penerjemah LOGO online tidak mendukung daftar templat.
Itu adalah daftar template (setara dengan fungsi lambda dalam bahasa lain).
Pemakaian:
(
apply
memanggil fungsi)akan dicetak
catatan:
Ini menggunakan kura-kura
ycor
(koordinat Y) untuk menyimpan jumlah ruang yang dibutuhkan untuk mengetik, oleh karena itu:window
harus dieksekusi jikaycor
terlalu besar sehingga kura-kura bergerak dari layar. Deskripsiwindow
perintahif the turtle is asked to move past the boundary of the graphics window, it will move off screen.
:, tidak seperti pengaturan defaultwrap
, yangif the turtle is asked to move past the boundary of the FMSLogo screen window, it will "wrap around" and reappear at the opposite edge of the window.
Penjelasan:
sumber
05AB1E , 8 byte
Cobalah online!
Terima kasih kepada Adnan .
sumber
vy
demiʒ
dangF
demiv
menghemat 2 byte.ʒ
trik lama yang bagus masih digunakan ...JavaScript (ES8),
696762 byteMengambil input sebagai bilangan bulat, dalam urutan naik, menggunakan sintaks currying. Mengembalikan array string.
Cobalah
sumber
Japt , 12 byte
Mengambil input dalam urutan apa pun dan selalu mengembalikan angka dalam urutan naik, sebagai larik garis.
Cobalah online! dengan
-R
bendera untuk bergabung dengan array dengan baris baru.Penjelasan
Masukan implisit dari
U
danV
.Buat rentang inklusif
[U, V]
dan petakan setiap nilai ke ...Nilai sebelum saat ini (
¯Y
), bergabung ke string (¬
) dan diisi dengan spasi (ç
).Ditambah nomor saat ini. Array yang dihasilkan adalah keluaran secara implisit.
sumber
Python 2 ,
65 63 6261 byte-2 byte Terima kasih kepada @Mr. Xcoder:
exec
tidak perlu kawat gigi-1 sampai jumpa berkat @ Zacharý:
print s*' '
asprint' '*s
Cobalah online!
sumber
m,n=input();s=0;exec(n-m+1)*"print s*' '+`m`;s+=len(`m`);m+=1;"
cukup.print s*' '
keprint' '*s
untuk menyimpan satu byte.JavaScript, 57 byte
sumber
y=>g=(x,s='')=>y<x?s:s+'\n'+g(x+1,s.replace(/./g,' ')+x)
Panggilan dengan currying dengan bilangan bulat terbalik:f(103)(95)
.x=>y=>g=(s='')=>y<x?s:s+'\n'+g(s.replace(/./g,' ')+x++)
Panggil sebagaif(x)(y)()
.Python 2,
6059 byte-1 byte terima kasih kepada Mr.Xcoder untuk mendefinisikan s = 0 sebagai variabel opsional di fungsi saya.
Cobalah online!
Saya pikir mungkin untuk mentransfer ini ke versi lambda, tapi saya tidak tahu caranya. Saya juga berpikir bahwa ada semacam pemetaan antara spasi dan panjang angka saat ini, tetapi ini saya juga belum mencari tahu. Jadi saya pikir masih ada ruang untuk perbaikan.
Apa yang saya lakukan adalah membuat rentang dari lowerbound
l
hingga batas atasu
mencetak setiap baris dengan spasi dikalikan dengan angkas
. Saya meningkatkan pengali dengan panjang angka saat ini.sumber
Python 2,
787779 byteCobalah online!
f(A, B)
akan mencetak bagian sumbu antara A dan B inklusif.Pertama kali saya menjawab tantangan!
Menggunakan dan menyalahgunakan backticks Python 2 untuk menghitung jumlah spasi yang harus ditambahkan sebelum nomor.
-1 byte terima kasih kepada Mr.Xcoder
+2 karena saya lupa a
+1
sumber
sum(len(`j`)) for
dapat menjadisum(len(`j`)for
, -1 byterange(a,b)
denganrange(a,b+1)
, karena Python memiliki rentang semi inklusif.C (gcc) ,
4138 byte-3 byte Berkat ASCII saja
Bekerja pada RedHat6, diakses melalui Putty
Cobalah online!
sumber
more
pada file ituV , 16 byte
Cobalah online!
Ini akan jauh lebih mudah jika saya dapat mengambil
start
end - start
tetapi saya pikir itu mengubah tantangan terlalu banyak.Ini mengambil nomor awal sebagai input dalam buffer dan nomor akhir sebagai argumen. Ini benar-benar membuat tangga dari
start
kestart + end
dan kemudian menghapus semuanya setelah angka akhir.sumber
MATL , 11 byte
Cobalah online!
Penjelasan
Ini bekerja dengan menghasilkan string untuk setiap nomor dan menyatukannya dengan salinan string sebelumnya yang dinegasikan secara logis. Karenanya 0 karakter diawali 0 sebanyak panjang string sebelumnya. Karakter 0 ditampilkan sebagai spasi, dan setiap string ditampilkan pada garis yang berbeda
sumber
Cepat 4 , 115 byte
Saya pikir tidak ada yang akan memposting solusi Swift pula ...
Cobalah online!
sumber
Perl, 19 byte
Catatan:
\x0b
dihitung sebagai satu byte.Bersama dengan yang lain, saya pikir menggunakan gerakan kursor akan menjadi rute terpendek, ini berarti itu tidak bekerja di TIO:
Pemakaian
sumber
1..
fungsinya di sana, karena Anda diberi dua bilangan bulat.1..
apakah saya tidak sepenuhnya membaca spek, itu sudah diperbaiki sekarang! Sedangkan untuk mengujinya secara online, karena output berisi tab vertikal, itu tidak menghasilkan seperti yang diharapkan. Mencoba melihat apakah saya dapat menemukan perender yang mendukung chars kontrol ... Jika tidak, itu mungkin proyek baru saya!Japt ,
109 byteUji secara online! Mengembalikan array garis;
-R
termasuk bendera untuk bergabung di baris baru agar lebih mudah dilihat.Penjelasan
Versi lama, 10 byte:
Uji secara online!
sumber
D,
133127126125121119 byteJelly dan APL diambil.
Cobalah online!
Jika Anda baik-baik saja dengan hasil yang bergantung pada konsol (menjalankan prinsip yang sama dengan jawaban C Giacomos) di sini satu untuk
7271 byte:Bagaimana? (Hanya trik spesifik D)
f(T)(T a,T b,T s=0)
Sistem template D dapat menyimpulkan tipefor(T j;j++<s;)
Integer default ke0
.' '.write;a.writeln
D memungkinkan Anda memanggilfun(arg)
sepertiarg.fun
(salah satu dari beberapa hal yang D miliki)a.text.length
Sama seperti di atas, dan D juga memungkinkan Anda untuk memanggil metode tanpa parameter seolah-olah itu adalah properti (text
konversi ke string)sumber
Java 8, 79 byte
Cobalah online!
sumber
(a,b)->
keb->a->
. (Dan Anda bisa menghemat tiga byte lagi dengan membuka Java 10 dan mengubahnyaString
menjadivar
.) Cobalah secara online.