Terinspirasi oleh output yang disadap dalam jawaban Clojure @Carcigenicate untuk tantangan Print this diamond .
Cetak teks persis ini:
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
(Dari tengah ke luar di kedua arah, setiap digit dipisahkan oleh satu spasi lebih banyak dari garis sebelumnya.)
Aturan tantangan:
- Tidak akan ada input ( atau input kosong yang tidak digunakan ).
- Ruang tambahan adalah opsional.
- Satu baris baru yang tertinggal adalah opsional.
- Spasi terdepan atau baris baru tidak diperbolehkan.
- Mengembalikan array-string tidak diizinkan. Anda harus menampilkan teks, atau memiliki fungsi yang mengembalikan string tunggal dengan hasil yang benar.
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.
code-golf
ascii-art
number
kolmogorov-complexity
Kevin Cruijssen
sumber
sumber
Jawaban:
SOGL V0.12 , 12 byte
Coba Di Sini! Penjelasan:
sumber
Python 2 ,
59 57 5655 byteCobalah online!
Penjelasan
i=8
- Menetapkan nilai8
ke variabel yang disebuti
.exec"..."*17
- Jalankan blok kode itu (...
) 17 kali.print(...)
- Keluarkan hasilnya.' '*abs(i)
- Buat String dengan spasi berulang|i|
kali..join('1234567890')
- Interleave string yang dibuat di atas dengan1234567890
, sehingga|i|
spasi dimasukkan di antara digit.i-=1
- Decrementi
, dan dengan mengeksekusinya sebanyak 17 kali, mencapai-8
, yang menciptakan pola berulang dengan bantuanabs()
.sumber
exec
dalam 55 byte juga . Menggunakan pendekatan yang mirip untuk mendapatkan Python 3 hingga 57 byte . Tidak melihat cara yang jelas untuk membuatnya lebih pendek, dengan menghilangkanexec
, tetapi mengira saya akan menyebutkannya sebagai suatu kemungkinan.Vim, 35 byte:
Penjelasan:
sumber
05AB1E ,
1413 byteCobalah online!
Penjelasan
sumber
s
... apakah masuk akal untuk bergabung dengan string dengan daftar atau daftar dengan string? Saya akan menyarankan peningkatan untuk Adnan. Oh, dan ada.∊
untukû»
.8F9ÝÀNð×ý}».∊
Saya sudah melakukan membuat pesawat ruang angkasa! Dan saya sangat senang menyarankan edit 12 byte.C64 ASM, 358 byte (102 byte dikompilasi dengan basicstub)
Ini adalah yang terdekat yang bisa saya dapatkan karena keterbatasan yang jelas:
(Mungkin bisa sedikit dioptimalkan)
sumber
TSQL,
220148 bytePeningkatan diposting oleh ZLK:
Keluaran:
sumber
DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))+' 'FROM sys.objects PRINT @
sys.objects
dengansysobjects
, dan 1object_id` denganid
saya mencari tabel yang lebih pendek dalamsys
skema, tetapi tidak ada yang pendek memiliki kolom sesingkatsysobjects
CAST
(denganPOWER(10)
) keVARCHAR
LOG10
danREPLICATE
:DECLARE @o VARCHAR(MAX)=''SELECT TOP 17 @o+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',replicate(' ',LOG10(POWER(10,ABS(ROW_NUMBER()OVER(ORDER BY id)-9)+1)/10)))+' 'FROM sysobjects PRINT @o
@
untuk memotong 3 karakter.APL (Dyalog) , 22 byte
Cobalah online!
⎕D
D igits dari nol menjadi sembilan1⌽
putar satu langkah ke kanan (menempatkan nol di ujung)⊂
melampirkan (untuk diperlakukan sebagai unit)(
...)↑¨¨
untuk masing - masing angka ini, ambil banyak karakter dari masing - masing huruf:⍳17
satu sampai tujuh belas¯9+
kurangi sembilan|
temukan nilai absolut1+
tambahkan satu∊¨
minta (ratakan) masing-masing↑
ubah satu lapisan kedalaman ke tingkat peringkat (matrify)sumber
>:
.APL is not a golfing language
...↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D
... ಠ_ಠHaskell ,
5855 byteCobalah online!
Ini pada dasarnya adalah solusi @nimi :)
sumber
Java 11 (JDK) , 98 byte
Cobalah online!
String::repeat
.Jawaban sebelumnya ( Java (OpenJDK 8) ),
113112 byteCobalah online!
Penjelasan
Saya pada dasarnya membangun
String
17 kali berikut (N
adalah variabel, bukan nilai aktual):Itu semua digit yang diharapkan, bergabung dengan di
%1$Ns
manaN
jumlah spasi antara setiap digit.%1$Ns
pada dasarnya berarti "mengambil argumen pertama dan pad sampai panjang setidaknyaN
". Juga,%1$0s
tidak didukung sehingga%1$s
dibuat kasus khusus0
.Akhirnya, saya memformat-mencetak string itu menggunakan argumen tunggal:,
""
sehingga formatter menggunakan kembali string kosong yang sama, menambahkannya dengan spasi sesuai kebutuhan.Menghemat
sumber
()->
dengano->
menyimpan byte. :)o
sebuahint
dan menggunakannya dalam Anda untuk loop?for(o=-9;++o<9;)
Japt
-R
,1918161413 byteUji atau coba secara online
Penjelasan
sumber
9ÆAõ%A qXîÃw ê ·
JavaScript (ES2017),
83737268 byteTerima kasih Shaggy untuk menghemat 10 byte. Terima kasih Craig untuk menghemat 1 byte. Terima kasih busur untuk menyimpan 4 byte.
sumber
Math.abs
. Saya juga membuata
daftar itu bukan hardcode, tapi itu pilihan ...a=[...Array(10).keys()];for(i=-8;i<9;i++)console.log(a.join(' '.repeat(i<0?-i:i)))
[..."1234567890"].join("".padEnd(i<0?-i:i))
[...Array(10).keys]
akan memiliki0
sebagai elemen pertama, bukan yang terakhir.for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`
X
Brachylog ,
302928 byteCobalah online!
Disimpan satu byte berkat Leaky Nun .
Penjelasan
sumber
Arang , 18 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Catatan:
Cast(1)
mengambil jumlah byte yang sama karena"1"
akan membutuhkan pemisah sebelumnya":"
(yang mana terjadi deverbosifier gagal untuk memasukkan).sumber
R , 108 byte
Hanya menempel dan meruntuhkan senarnya.
Cobalah online!
Sunting: terima kasih atas Challenger5 karena menunjukkan masalah. Perbaiki sekarang.
Sunting 2: menyimpan satu byte berkat bouncyball.
sumber
paste0
alih-alihpaste
harus menambahkan byte :(el
:el(strsplit("1234567890",""))
bukannyastrsplit("1234567890","")[[1]]
paste
pernyataan dengan menggunakansep
argumencat
dan melakukan sedikit lebih banyak untuk mencapai 70 bytePython 3 ,
585754 byteCobalah online!
(terima kasih kepada @flornquake untuk tiga byte terakhir; Saya benar-benar lupa menggunakan
sep
untuk menyimpan vs..join
)sumber
while i+9:print(*'1234567890',sep=' '*abs(i));i-=1
Pyth ,
1413 byte1 byte berkat Mnemonic.
Cobalah online!
sumber
Java 8,
235234206163 bytePembaruan : -28 byte berkat Leaky Nun!
Perbarui 2 : -43 bytes berkat Leaky Nun lagi!
Tidak Disatukan:
Cobalah online
EDIT: Kode sebelumnya salah! Membuat kesalahan saat golf kode, itu harus berfungsi seperti yang dimaksudkan sekarang!
sumber
public
, dan menyingkirkan beberapa ruang yang tidak perlu. Dan ada beberapa hal lagi yang perlu diperbaiki, tetapi saya sarankan untuk membaca tipsnya, dan lihat di mana Anda bisa meningkatkan diri. Sekali lagi selamat datang, dan nikmati masa tinggal Anda! :)Sekam , 21 byte
Ini adalah program lengkap yang mencetak ke STDOUT. Cobalah online! Ada banyak ruang trailing.
Penjelasan
Sekam masih kehilangan banyak hal penting seperti fungsi rentang dua argumen, sehingga bagian dari solusi ini sedikit berantakan.
sumber
ṁs`:0ḣ9
denganuṁsḣ10
untuk menghasilkan string "1234567890" dengan satu byte lebih sedikit!T-SQL 145
152byteDiperbarui untuk digunakan:
master..spt_values
untuk menghasilkan angka (WHERE type = 'P'
, ini selalu berurutan, mulai dari 0)TOP 17
Ide ZLKHasil:
(Terima kasih @JanDrozen untuk ide REPLACE)
sumber
SELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects
(dengan asumsi Anda tidak perlu mencetak).Clojure,
12699 byte-27 dengan memperbaiki beberapa kesalahan bodoh. Penggunaan luar
a
tidak diperlukan, jadi saya bisa menyingkirkana
semuanya dan hanya menulisapply str
sekali. Itu juga memungkinkan saya untuk menggunakan makro fungsi untuk fungsi utama, yang menyimpan beberapa byte. Saya juga menguraikan panggilan untukMath/abs
bukannya memberontakn-spaces
.Pada dasarnya port Clojure dari ide Python @ Mr.Xcoder. Dalam retrospeksi, saya seharusnya menggunakan
abs
/range
metode untuk tantangan berlian pada awalnya, tapi saya mungkin tidak menghasilkan output yang disadap!Cukup mudah. Bergabung dengan string angka dengan sejumlah spasi yang tergantung pada baris saat ini.
sumber
Jelly , 15 byte
Cobalah online!
sumber
Mathematica, 92 byte
Cobalah online
salin / tempel kode dengan ctrl-v
tekan shift + enter untuk menjalankan
sumber
C, 97 byte
Kompiler Anda mungkin akan banyak mengeluh tentang kode ini; Tambang saya melemparkan 7 peringatan dari 4 jenis. Dapat meningkatkan kode nanti.
Cobalah online!
sumber
C (gcc) , 76 byte
Cobalah online!
Ini menghasilkan beberapa spasi tambahan, yang seharusnya OK.
Ini mencetak angka menggunakan bidang dibenarkan kiri panjang dinamis - itulah gunanya format string
%-*d
.Loop dalam memiliki beberapa inisialisasi lucu (mulai dari 10; kelipatan 10 akan baik-baik saja) untuk "menyederhanakan" kondisi penghentiannya.
sumber
Arang ,
21 20 1918 byteCobalah online!
Tautan ke versi verbose . Pada dasarnya saya membuat bagian bawah gambar dan kemudian memantulkan teks ke atas.
sumber
E…⁹⪫E…·¹χI﹪κχ× ι‖B↑
(juga untuk 19 byte) tetapi penerjemah tampaknya tidak menyukainya (saya tidak bisa melihat apa yang salah dengan itu sendiri).Map
adalah herring merah, jadi sekarang saya sudah memposting jawaban 18 byte saya.CJam , 21 byte
Cobalah online!
Penjelasan
sumber
9{S*A,(+\*}%_W%);\+N*
Batch, 163 byte
Catatan: Baris pertama berakhir dalam 9 spasi. Penjelasan: Menggunakan penomoran baris kreatif! Loop pertama harus berjalan 9 kali dan menghapus spasi setiap kali, sedangkan loop kedua perlu berjalan 8 kali dan menambahkan spasi setiap kali. Yang pertama dicapai dengan menjalankannya 7 kali dan jatuh untuk yang ke-8, sementara yang kedua dicapai dengan menambahkan dua ruang dan jatuh melalui untuk menghapus salah satunya lagi.
sumber
SOGL V0.12 , 14 byte
Coba Di Sini!
Penjelasan:
sumber
PHP , 69 byte
Cobalah online!
sumber
PowerShell , 30 byte
Cobalah online!
Buat rentang
8,7,6...2,1,0,1,2...8
loop kemudian melalui masing-masing nomor. Di dalam loop kita membangun berbagai1..9
bersambung dengan0
kemudian-join
angka-angka dalam kisaran bersama-sama dengan jumlah yang tepat dari ruang. Setiap string ditinggalkan di jalur pipa, dan output tersirat pada penyelesaian program.sumber