Itu hanya bug


76

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 , 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.

Apakah mengeluarkan array string - 1 string per baris - diizinkan?
Shaggy

@ Shaggy Maaf, dalam hal ini harus mengembalikan string tunggal dengan baris baru, atau output hasilnya. Saya telah menambahkan ini sebagai aturan untuk tantangan.
Kevin Cruijssen

Jangan khawatir, Kevin; baru saja menyenggol lenganku untuk melihat apakah aku bisa menyelamatkan diriku beberapa byte.
Shaggy

3
@Shaggy Hehe. Apa alasan lain yang harus kita ajukan pertanyaan dalam tantangan kode-golf, selain memiliki tujuan menyelamatkan beberapa byte itu? ;)
Kevin Cruijssen

8
Ha, itu luar biasa. Saya bertanya-tanya mengapa jawaban itu tiba-tiba mendapat banyak perhatian. Terima kasih!
Carcigenicate

Jawaban:


7

SOGL V0.12 , 12 byte

9{SUē↕∑}¹№╬«

Coba Di Sini! Penjelasan:

9{     }      9 times do
  SU            push "1234567890"
    ē           push e, predefined with the input, which defaults to 0, and then increase it
     ↕          get that many spaces
      ∑         join the string of digits with those spaces
        ¹     collect the results in an array
         №    reverse the array vertically
          ή  palindromize vertically with 1 overlap

Oh bagus, ini bahkan lebih pendek dari jawaban yang diterima. Hmm, bagaimana kebijakan jawaban singkat beberapa bulan setelah jawaban diterima? Apakah ini sekarang mendapatkan cek (agak tidak adil untuk jawaban yang saat ini diterima saya pikir), atau haruskah saya melakukan sesuatu yang lain? Apapun jawabannya! +1 dari saya.
Kevin Cruijssen

@KevinCruijssen Biasanya praktik terbaik adalah memperbarui jawaban yang diterima, tetapi karena ini menggunakan beberapa fitur baru, saya akan mengatakan ada alasan untuk memilihnya - Anda pilih.
dzaima

62

Python 2 , 59 57 56 55 byte

i=8;exec"print(' '*abs(i)).join('1234567890');i-=1;"*17

Cobalah online!

@Leaky Nun banyak membantu golf ini, @Praind Menyarankan metode untuk menghemat 1 byte, yang sebelumnya saya pikirkan, tetapi lupa mengedit, @CotyJohnathanSaxman menyarankan untuk mengubah loop.


Penjelasan

  • i=8- Menetapkan nilai 8ke variabel yang disebut i.

  • 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 dengan 1234567890, sehingga |i|spasi dimasukkan di antara digit.

  • i-=1- Decrement i, dan dengan mengeksekusinya sebanyak 17 kali, mencapai -8, yang menciptakan pola berulang dengan bantuan abs().



23
Ini adalah peternakan yang lebih mengesankan daripada 25 byte dalam bahasa golf apa pun.
Jylo

4
@Jylo Terima kasih, tetapi solusi 25 byte sangat mengesankan, karena mereka menunjukkan banyak upaya golf yang dilakukan oleh penulisnya. Pertama-tama Anda harus tahu apa arti setiap karakter dalam sumber mereka, dan kemudian Anda akan memahami betapa indahnya mereka bermain golf.
Tn. Xcoder

2
@JasonChen Tidak, Python tidak mengizinkan sintaks itu, karena itu khusus untuk bahasa mirip-C.
Tn. Xcoder

5
Kemungkinan inspirasi: Dapat dilakukan tanpa 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 menghilangkan exec, tetapi mengira saya akan menyebutkannya sebagai suatu kemungkinan.
ShadowRanger

32

Vim, 35 byte:

i1234567890<esc>qqYP:s/\d/& /g
YGp{q7@q

Penjelasan:

i1234567890<esc>    " insert '1234567890'
qq                  " Record the following into register 'q'
  Y                 "   Yank a line
   P                "   Paste it above us
    :s/\d/& /g      "   Put a space after each number
Y                   "   Yank this line
 G                  "   Move the end of the buffer
  p                 "   Paste the line
   {                "   Move the beginning of the buffer
    q               " Stop recording
     7@q            " Call macro 'q' 7 times

6
Saya bahkan tidak peduli bahwa ini bukan pemenangnya, itu indah.
MrDuk

@MrDuk Terima kasih! Saya senang Anda menyukainya :)
DJMcMayhem

21

05AB1E ,  14  13 byte

17F9ÝÀN8αð×ý,

Cobalah online!

Penjelasan

17F            # for N in [0 ... 16] do
   9Ý          # push [0 ... 9]
     À         # rotate left
      N8α      # compute the absolute difference between N and 8
         ð×    # push that many spaces
           ý   # merge the list of digits with the space string as separator
            ,  # print

1
Hmm ... Anda bisa mengalahkan SOGL jika Anda tidak membutuhkan s... apakah masuk akal untuk bergabung dengan string dengan daftar atau daftar dengan string? Saya akan menyarankan peningkatan untuk Adnan. Oh, dan ada .∊untuk û».
Erik the Outgolfer

@EriktheOutgolfer: Atau saya bisa mengganti metode saya dan menyimpan 1 byte yang saya butuhkan :)
Emigna

Maaf sudah ter-upgrade.
Erik the Outgolfer

3
Itu berarti saya telah diputuskan lagi ...
Erik the Outgolfer

4
8F9ÝÀNð×ý}».∊Saya sudah melakukan membuat pesawat ruang angkasa! Dan saya sangat senang menyarankan edit 12 byte.
Magic Gurita Guci

20

C64 ASM, 358 byte (102 byte dikompilasi dengan basicstub)

Ini adalah yang terdekat yang bisa saya dapatkan karena keterbatasan yang jelas:

C64

jsr $E544
lda #9
sta $FD
nl1: jsr dl
jsr il
dec $FD
bne nl1
inc $FD
nl2: ldy $FD
cpy #9
bne nt1
bl: jmp bl
nt1: iny
sty $FD
jsr dl
jsr il
jmp nl2
dl: clc
ldx #$31
ldy #0
lp: txa
sm: sta $0400, y
inx
cpx #$31
bne c1
rts
c1: cpx #$3A
bne nt2
ldx #$30
clc
nt2: tya
adc $FD
cmp #40
bcc c2
rts
c2: tay
jmp lp
il: lda sm+1
adc #39
bcc nc
inc sm+2
nc: sta sm+1
rts

(Mungkin bisa sedikit dioptimalkan)


Selamat datang di PPCG! Silakan gunakan tag kode untuk memposting cantik. Saya mengedit posting Anda. Setelah perubahan diterapkan, Anda dapat melihat, apa yang berubah dengan mengeklik sunting
Евгений Новиков

Saya baru saja memeriksa dan bahkan tidak akan cocok dengan 80 cols PET karena baris pertama dan terakhir membutuhkan 82 kolom.
Shaun Bebbers

17

TSQL, 220 148 byte

Peningkatan diposting oleh ZLK:

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 @

Keluaran:

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

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 @
ZLK

Ganti sys.objectsdengan sysobjects, dan 1object_id` dengan idsaya mencari tabel yang lebih pendek dalam sysskema, tetapi tidak ada yang pendek memiliki kolom sesingkatsysobjects
Jaloopa

Dan Anda dapat menyimpan beberapa byte lagi dengan mengubah bagian dalam CAST(dengan POWER(10)) keVARCHAR
Jaloopa

Bahkan, hindari semua yang menggantikan barang-barang dengan menggunakan LOG10dan REPLICATE: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
Jaloopa

Anda dapat mengubah nama variabel menjadi hanya @untuk memotong 3 karakter.
Jembatan

14

APL (Dyalog) , 22 byte

↑∊¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D

Cobalah online!

⎕DD igits dari nol menjadi sembilan

1⌽ 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 absolut

1+ tambahkan satu

∊¨ minta (ratakan) masing-masing

 ubah satu lapisan kedalaman ke tingkat peringkat (matrify)


3
Dalam bahasa yang ringkas seperti ini, perlu dua byte untuk menambahkan satu?
aschepler

3
@aschepler Ya. APL bukan bahasa golf, dan tidak memiliki primitif kenaikan. J melakukannya, tetapi dibutuhkan dua byte; >:.
Adám

4
APL is not a golfing language... ↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D... ಠ_ಠ
Alexander

1
@Alexander Terima kasih atas perhatian saya kembali ke yang satu ini. Saya bisa bermain golf 3 byte.
Adám


12

Java 11 (JDK) , 98 byte

o->{for(int i=-9;++i<9;)System.out.println("".join(" ".repeat(i<0?-i:i),"1234567890".split("")));}

Cobalah online!

  • -14 byte dengan beralih ke JDK 11, yang sekarang memiliki asli String::repeat.

Jawaban sebelumnya ( Java (OpenJDK 8) ), 113 112 byte

o->{for(int i=-9;++i<9;)System.out.printf("".join("%1$"+(i<0?-i:i>0?i:"")+"s","1234567890".split(""))+"%n","");}

Cobalah online!

Penjelasan

Saya pada dasarnya membangun String17 kali berikut ( Nadalah variabel, bukan nilai aktual):

"1%1$Ns2%1$Ns3%1$Ns4%1$Ns5%1$Ns6%1$Ns7%1$Ns8%1$Ns9%1$Ns0%n"

Itu semua digit yang diharapkan, bergabung dengan di %1$Nsmana Njumlah spasi antara setiap digit.

%1$Nspada dasarnya berarti "mengambil argumen pertama dan pad sampai panjang setidaknya N". Juga, %1$0stidak didukung sehingga %1$sdibuat kasus khusus 0.

Akhirnya, saya memformat-mencetak string itu menggunakan argumen tunggal:, ""sehingga formatter menggunakan kembali string kosong yang sama, menambahkannya dengan spasi sesuai kebutuhan.

Menghemat

  • Terima kasih 1 byte untuk Kevin Cruijssen

2
Jawaban bagus! Btw, saya secara eksplisit disebutkan dalam tantangan parameter kosong yang tidak terpakai diizinkan, jadi Anda bisa menggantinya ()->dengan o->menyimpan byte. :)
Kevin Cruijssen

Anda bisa membuat osebuah intdan menggunakannya dalam Anda untuk loop? for(o=-9;++o<9;)
Musim dingin

2
@ Musim Dingin Tidak, karena tantangan mengatakan " tidak digunakan ", dan itu akan menggunakan variabel parameter, bahkan jika nilainya tidak akan digunakan.
Olivier Grégoire

@ OlivierGrégoire Ini tautan ke posting ini codegolf.meta.stackexchange.com/questions/12681/… dan posting ini hanya mengatakan itu harus kosong (0 untuk int).
Musim dingin

@ Memang Memang, tetapi tantangan itu sendiri mengatakan "tidak digunakan". Keputusan spesifik dalam suatu tantangan mengesampingkan standar.
Olivier Grégoire

11

Japt -R , 19 18 16 14 13 byte

Aõ%A
£qYçÃÔÅê

Uji atau coba secara online


Penjelasan

A             :10
 õ           :Range [1,10]
  %A         :Modulo each by 10
\n           :Assign to variable U
£            :Map each element at 0-based index Y
 q           :  Join U with
  Yç         :   Space repeated Y times
    Ã        :End map
     Ô       :Reverse
      Å      :Slice off first element
       ê     :Mirror
             :Implicitly join with newlines and output

2
Bagus. Solusi 16-byte saya adalah9ÆAõ%A qXîÃw ê ·
ETHproductions

8

JavaScript (ES2017), 83 73 72 68 byte

Terima kasih Shaggy untuk menghemat 10 byte. Terima kasih Craig untuk menghemat 1 byte. Terima kasih busur untuk menyimpan 4 byte.

for(i=-9,a="";i++<8;)a+=[...`1234567890
`].join("".padEnd(i<0?-i:i))

for(i=-9,a="";i++<8;)a+=[...`1234567890
`].join("".padEnd(i<0?-i:i))

console.log(a);
.as-console-wrapper { max-height: 100% !important; top: 0; }
.as-console-row:after { display: none !important; }


Hemat 1 byte dengan menggunakan polyfill untuk Math.abs. Saya juga membuat adaftar 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)))
Thomas W

1
Simpan beberapa byte dengan[..."1234567890"].join("".padEnd(i<0?-i:i))
Shaggy

@Shaggy Terima kasih. Itu menghemat 10 byte. :)
Tushar

1
@ Thomas: [...Array(10).keys]akan memiliki 0sebagai elemen pertama, bukan yang terakhir.
Shaggy

1
Anda dapat menyimpan byte menggunakan metode Anda menyimpan hasilnya dalam string daripada login for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`X
Craig Ayre

7

Brachylog , 30 29 28 byte

Ị↺{∧≜;Ṣj₍g;?↔zcc}ᶠ⁹↔;XcP↔Pẉᵐ

Cobalah online!

Disimpan satu byte berkat Leaky Nun .

Penjelasan

Ị↺                               The string "1234567890"
  {               }ᶠ⁹            Find the first 9 outputs of:
   ∧≜                              Take an integer
       ;Ṣj₍                        Juxtapose " " that number of times
           g;?↔z                   Zip that string of spaces with "1234567890"
                cc                 Concatenate twice into one string
                    ↔            Reverse the resuling list
                     ;XcP↔P      Palindromize the list (concatenate X to it into the list P,
                                   P reversed is still P)
                           ẉᵐ    Map writeln


@ LeakyNun Saya terjebak pada "Cetak teks yang tepat" besar ini dan tidak membaca bahwa kita bisa memiliki garis trailing ...
Fatalize


1
@ LeakyNun Mengapa Anda tidak memposting jawaban Anda sendiri?
Fatalkan

7

Arang , 18 byte

F⁹⪫⁺…I¹:⟦0¶⟧× ι‖B↑

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

F⁹      Repeat 9 times (i = loop variable)
  ⪫       Join
   ⁺       Concatentate
    …I¹:    All the characters from str(1) below ":" (i.e. to "9") as a list
    ⟦0¶⟧    A list whose element is the string "0\n"
   × ι     With i spaces
‖B↑     Reflect everything upwards but without duplicating the top line

Catatan: Cast(1)mengambil jumlah byte yang sama karena "1"akan membutuhkan pemisah sebelumnya ":"(yang mana terjadi deverbosifier gagal untuk memasukkan).


7

R , 108 byte

for(i in abs(-8:8))cat(paste0(el(strsplit("1234567890","")),paste(rep(" ",i),collapse=""),collapse=""),"\n")

Hanya menempel dan meruntuhkan senarnya.

Cobalah online!

Sunting: terima kasih atas Challenger5 karena menunjukkan masalah. Perbaiki sekarang.

Sunting 2: menyimpan satu byte berkat bouncyball.


Selamat datang di situs ini! :)
DJMcMayhem

2
Ini tidak terlihat benar - garis tengah seharusnya tidak memiliki ruang sama sekali.
Buah Esolanging

@ Challenger5 kamu benar! memperbaikinya dengan menggunakan paste0alih-alih pasteharus menambahkan byte :(
Probel

1
simpan 2 byte menggunakan el: el(strsplit("1234567890",""))bukannyastrsplit("1234567890","")[[1]]
bouncyball

Anda dapat menyingkirkan salah satu pastepernyataan dengan menggunakan separgumen catdan melakukan sedikit lebih banyak untuk mencapai 70 byte
Giuseppe

7

Python 3 , 58 57 54 byte

i=8
while i+9:print(*'1234567890',sep=' '*abs(i));i-=1

Cobalah online!

(terima kasih kepada @flornquake untuk tiga byte terakhir; Saya benar-benar lupa menggunakan sepuntuk menyimpan vs. .join)


1
54 byte:while i+9:print(*'1234567890',sep=' '*abs(i));i-=1
flornquake


6

Java 8, 235 234 206 163 byte

interface A{static void main(String[]a){for(int i=-8;i<9;i++){String s="";for(int j=1,k;j<10;j++){s+=j;for(k=0;k<(i>0?i:-i);k++)s+=" ";}System.out.println(s+0);}}}

Pembaruan : -28 byte berkat Leaky Nun!
Perbarui 2 : -43 bytes berkat Leaky Nun lagi!

Tidak Disatukan:

interface A {
    static void main(String[] a) {
        for (int i = -8; i < 9; i++) {
            String s = "";
            for (int j = 1, k; j < 10; j++) {
                s += j;
                for (k = 0; k < (i > 0 ? i : -i); k++)
                    s += " ";
            }
            System.out.println(s + 0);
        }
    }
}

Cobalah online

EDIT: Kode sebelumnya salah! Membuat kesalahan saat golf kode, itu harus berfungsi seperti yang dimaksudkan sekarang!


4
Selamat datang di PPCG! Tips untuk bermain golf di Jawa dan Tips untuk bermain golf di <semua bahasa> mungkin menarik untuk dibaca. :) Beberapa hal yang dapat Anda lakukan adalah menghapus golf 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! :)
Kevin Cruijssen

2
Hmm, juga, apakah Anda yakin telah memposting kode yang benar? Ketika saya menyalin-tempel kode Anda ke dalam TryItOnline, itu tidak memberikan hasil yang benar.
Kevin Cruijssen

1
Sialan, saya melakukan sesuatu yang salah saat golf kode! Saya akan memperbaikinya!
Alex Ferretti



6

Sekam , 21 byte

mΣṪ`:§+↔tḣR8' ṁs`:0ḣ9

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.

mΣṪ`:§+↔tḣR8' ṁs`:0ḣ9
              ṁs`:0ḣ9  This part evaluates to the string "1234567890".
                   ḣ9   Range from 1 to 9.
                `:0     Append 0.
              ṁs        Convert each number to string and concatenate.
     §+↔tḣR8'          This part evaluates to a list like ["  "," ",""," ","  "]
                       but with 17 elements instead of 5.
          R8'           A string of 8 spaces.
         ḣ              Take prefixes.
     §+                 Concatenate
       ↔                the reversal and
        t               tail of the prefix list, palindromizing it.
  Ṫ                    Take outer product of the two lists
   `:                  with respect to flipped prepeding.
                       This prepends each digit to each string of spaces.
mΣ                     Map concatenation over the results, computing the rows.
                       Implicitly join with newlines and print.

Anda dapat mengganti ṁs`:0ḣ9dengan uṁsḣ10untuk menghasilkan string "1234567890" dengan satu byte lebih sedikit!
Sophia Lechner

6

T-SQL 145 152 byte

DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(number-8)))+'
'FROM master..spt_values WHERE type='P'PRINT @

Diperbarui untuk digunakan:

  • master..spt_valuesuntuk menghasilkan angka ( WHERE type = 'P', ini selalu berurutan, mulai dari 0)
  • @ TOP 17Ide ZLK
  • PRINT (untuk mematuhi aturan - tidak ada stringlists)
  • @ JanDrozen ide bagus untuk memasukkan carriage return dalam string (saya menghitung itu hanya satu byte - Windows CRLF apa?)
  • Ide @Bridge hanya menggunakan @ untuk nama variabel - semua trik ini !!

Hasil:

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

(Terima kasih @JanDrozen untuk ide REPLACE)


Ini jawaban yang bagus! Selamat datang di situs :)
DJMcMayhem

Terima kasih. Saya melihat beberapa dari kita telah menemukan bahasa kita sendiri di sini :)
Reversed Engineer

1
Gabungan antara jawaban ini dan yang lain adalah optimal: misalnya SELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects(dengan asumsi Anda tidak perlu mencetak).
ZLK

Aha @ZLK - beberapa trik yang bagus - TOP 17, PERINGKAT PERINGKAT, dan sys.objects - terima kasih!
Insinyur Terbalik

6

Clojure, 126 99 byte

-27 dengan memperbaiki beberapa kesalahan bodoh. Penggunaan luar atidak diperlukan, jadi saya bisa menyingkirkan asemuanya dan hanya menulis apply strsekali. Itu juga memungkinkan saya untuk menggunakan makro fungsi untuk fungsi utama, yang menyimpan beberapa byte. Saya juga menguraikan panggilan untuk Math/absbukannya memberontak n-spaces.

Pada dasarnya port Clojure dari ide Python @ Mr.Xcoder. Dalam retrospeksi, saya seharusnya menggunakan abs/ rangemetode 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.

#(doseq[n(range -8 9)](println(clojure.string/join(apply str(repeat (Math/abs n)\ ))"1234567890")))

(defn bugged []
  (doseq [n-spaces (range -8 9)]
    (println
        (clojure.string/join
          ; "String multiplication"
          (apply str
                 (repeat (Math/abs n-spaces) \space))
          "1234567890"))))


5

Mathematica, 92 byte

Column@Join[Reverse@(s=Row/@Table[Riffle[Range@10~Mod~10,""<>Table[" ",i]],{i,0,8}]),Rest@s]

Cobalah online

salin / tempel kode dengan ctrl-v
tekan shift + enter untuk menjalankan


Bisakah Anda menambahkan tautan TryItOnline ?
Kevin Cruijssen

@KevinCruijssen Mathematica bukan bahasa gratis, dan Matematika sepertinya tidak berfungsi .
Leaky Nun

@ LeakyNun Ah ok, terima kasih. Saya melihat MartinEnder memposting tautan TIO kadang-kadang, tetapi itu memang tautan Mathics.
Kevin Cruijssen

1
@Kevin Cruijssen ya tentu saja, saya menambahkan tautan dengan instruksi
J42161217

5

C, 97 byte

i=-9;main(j){for(;++i<9;putchar(10))for(j=0;++j<11;printf("        "+8-abs(i)))putchar(48+j%10);}

Kompiler Anda mungkin akan banyak mengeluh tentang kode ini; Tambang saya melemparkan 7 peringatan dari 4 jenis. Dapat meningkatkan kode nanti.

Cobalah online!


5

C (gcc) , 76 byte

f(x,y){for(y=-9;++y<9;puts(""))for(x=10;x++;printf("%-*d",abs(y)+1,x%=10));}

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.


4

Arang , 21 20 19 18 byte

F⁹«F…¹χ⁺κ… ι0⸿»‖B↑

Cobalah online!

Tautan ke versi verbose . Pada dasarnya saya membuat bagian bawah gambar dan kemudian memantulkan teks ke atas.


1
Ketika saya melihat pertanyaan saya pikir saya akan mencoba ini sendiri di Charcoal sebelum melihat jawabannya. Saya mulai dengan jawaban 21-byte tetapi memutarnya hingga 20 byte ... seram!
Neil

@Neil :-D Nah, sekarang 19 byte!
Charlie

Yup, baru saja menemukan golf itu. Saya juga melihat ke dalam E…⁹⪫E…·¹χI﹪κχ× ι‖B↑(juga untuk 19 byte) tetapi penerjemah tampaknya tidak menyukainya (saya tidak bisa melihat apa yang salah dengan itu sendiri).
Neil

Oh, Range butuh dua argumen, konyol aku.
Neil

1
Ternyata Mapadalah herring merah, jadi sekarang saya sudah memposting jawaban 18 byte saya.
Neil

4

CJam , 21 byte

A,(+aH*ee{:\8-zS**n}/

Cobalah online!

Penjelasan

A,     e# Get [0 1 2 ... 9].
(+     e# Rotate the 0 to the end.
aH*    e# Wrap in an array and repeat 17 times.
ee     e# Enumerate. This pairs each copy of the array with its index in
       e# the list.
{      e# For each [index array] pair...
  :\   e#   Unwrap the pair and swap its order.
  8-z  e#   Get the absolute difference of the index from 8.
  S*   e#   Get a string of that many spaces.
  *    e#   Riffle the list of digits with the string of spaces.
  n    e#   Print it with a trailing linefeed.
}/

1
Solusi alternatif (juga 21 byte):9{S*A,(+\*}%_W%);\+N*
Buah Esolanging

4

Batch, 163 byte

@set s=1 2 3 4 5 6 7 8 9 0
@set t=         
@for %%l in (9 7)do @for /l %%i in (1,1,%%l)do @call:%%l
:7
@set t=  %t%
:9
@set t=%t:~1%
@call echo %%s: =%t%%%

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.


4

SOGL V0.12 , 14 byte

ā9{SUčf@*∑Κ}╬Æ

Coba Di Sini!

Penjelasan:

ā               push an empty array
 9{        }    9 times do
   SU             push "1234567890"
     č            chop into characters
      f@*         get current iteration (0-based) amount of spaces
         ∑        join with that
          Κ       prepend this to the array
            Β  palindromize vertically with 1 overlap


4

PowerShell , 30 byte

8..0+1..8|%{1..9+0-join' '*$_}

Cobalah online!

Buat rentang 8,7,6...2,1,0,1,2...8loop kemudian melalui masing-masing nomor. Di dalam loop kita membangun berbagai 1..9bersambung dengan 0kemudian -joinangka-angka dalam kisaran bersama-sama dengan jumlah yang tepat dari ruang. Setiap string ditinggalkan di jalur pipa, dan output tersirat pada penyelesaian program.


1
Jawaban bagus! Powershell tiba-tiba terasa lebih seperti golf :)
Tn. Xcoder
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.