Alfabet Diagonal


66

Diberikan tanpa input, tugas Anda adalah menghasilkan yang berikut:

a
 b
  c
   d
    e
     f
      g
       h
        i
         j
          k
           l
            m
             n
              o
               p
                q
                 r
                  s
                   t
                    u
                     v
                      w
                       x
                        y
                         z

Secara nonvisual, tugas Anda adalah membuat setiap huruf dalam alfabet, dengan spasi sebelum sama dengan posisinya dalam alfabet minus satu.

Jika Anda mencetak ini, itu harus muncul seperti di atas. Ruang kosong ekstranus yang tidak memengaruhi penampilan, serta baris baru yang tertinggal, diizinkan. Anda dapat menggunakan semua huruf kecil, atau semua huruf besar.

Anda juga dapat mengembalikan ini dari fungsi sesuai aturan biasa, baik sebagai string dengan baris baru, atau daftar string.

Ini , jadi jawaban tersingkat dalam byte menang!


Apakah spasi harus berupa ruang ASCII nyata, atau bisakah saya memberikan output seperti a<VERTICAL-TAB>b<VERTICAL-TAB>c...? Bagaimana kalau ada beberapa karakter backspace di sana juga? Selama hasil visualnya sama?
Digital Trauma

@DigitalTrauma selama nampaknya sama, saya tidak peduli seperti apa spasi yang Anda gunakan.
Stephen

Bisakah saya menggunakan tab alih-alih spasi?

@ yamboy1 hmm, mungkin tidak. Sebagian besar tab diatur ke sejumlah besar ruang - jika diagonal Anda terlihat seperti memiliki 4ruang sebelum b, itu tidak akan terlihat sangat diagonal. Jika kelihatannya kemiringan ~ -1maka tidak masalah.
Stephen

tidak mempengaruhi penampilan termasuk memiliki ruang pemimpin tambahan atau 2?
MildlyMilquetoast

Jawaban:


87

Arang , 2 byte

↘β

Cobalah online!

Bagaimana?

 β - the lowercase alphabet
↘  - direction

Persis jenis tantangan yang awalnya dirancang untuk Arang.


4
Bahasa yang tepat :)
Stephen

2
Ini mengingatkan saya, saya mungkin harus bekerja pada Crayon lagi ... Saya percaya ↘"abc ... xyz"qakan menjadi program kerja terpendek. ( Coba online! ) ↘``26O;)qHarus bekerja (mulai dengan backtick; untuk setiap I di 0 ... 25, pop I implisit, menambah backtick dan output), tetapi ia melempar kesalahan "tumpukan kosong" untuk beberapa alasan .. .
ETHproductions

2
2 byte ?! Dalam pengkodean apa SOUTH EAST ARROW satu byte?
Wyck

6
@Wyck Charcoal (note: spekulasi) menggunakan halaman kode khusus, yang dapat dikompresi menjadi instruksi 1 byte. Itu sah untuk Code Golf. codegolf.meta.stackexchange.com/questions/9428/…
Draco18s

14
@StephenS, saya pikir maksud Anda bahasa kanan bawah :)
Wossname

18

C, 45 byte

f(i){for(i=0;++i<27;)printf("%*c\n",i,i+96);}

Terima kasih kepada @Dennis karena telah menghemat 5 byte!


9
Bekerja pada mesin saya ™
Destructible Lemon

Saya pikir Anda harus menginisialisasi atau mengatur ulang idi beberapa titik. Setidaknya di TIO, f()hanya berfungsi sekali .
Dennis

@ Dennis Ah, kau benar. Memperbaiki itu.
Gagang Pintu

f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}menghemat beberapa byte.
Dennis

3
f(i){for(i=96;i<122;)printf("%c\v",++i);}untuk 41 byte - pastikan untuk menjalankan ini pada terminal aktual (ya, ini diizinkan )
NieDzejkob

13

05AB1E , 14 8 6 byte

-2 byte terima kasih kepada @Emigna

AvyNú»

Bagaimana itu bekerja

A      # lowercase alphabet
 v     # for letter in alphabet
  y    # push letter
   N   # push index of letter
    ú  # Pad letter with index of letter spaces
     » # Join with stack on newline.

Cobalah online!

Versi asli, 14 byte

26FNð×N65+ç«}»

Anda dapat menyimpan 2 byte lagi dengan AvyNú».
Emigna

@Emigna: Terima kasih! Akan mengeditnya di.
Neil A.

ƶtampaknya begitu sempurna, tetapi itu bukan :(.
Magic Gurita Guci

Λmungkin belum tersedia pada saat itu, tetapi 26A3Λmenghemat satu byte.
Kevin Cruijssen

1
@MagicOctopusUrn ₂A3Λakan lebih pendek.
Kevin Cruijssen

12

JavaScript (ES6), 60 59 byte

f=(n=10)=>n-36?" ".repeat(n-10)+n.toString(++n)+`
`+f(n):""

Fungsi rekursif yang mengembalikan string dengan baris baru tambahan.


1
Wah, itu sangat licik. Mengonversi angka dalam kisaran 10 hingga 36 menjadi angka dalam basis yang aneh. Belum mengerti mengapa basis harus meningkat juga.
Steve Bennett

2
@SteveBennett Benar, tetapi n.toString(++n)+f(n)satu byte lebih pendek dari n.toString(36)+f(n+1).
ETHproduk

1
Anda bisa melakukannya f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""untuk 55.
Arnauld

1
Simpan byte dengan beberapa ES8: "".padEnd(n-10)+n.toString(++n).
Shaggy

1
@Arnauld, f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):ssepertinya diizinkan.
Shaggy

12

Ruby , 28 byte

26.times{|a|puts" "*a<<97+a}

Cobalah online!

Penjelasan:

Operator << pada string di Ruby melakukan trik, seperti yang dijelaskan dalam Dokumentasi

  • str << integer → str

  • str << obj → str

Tambah — Memadukan objek yang diberikan ke str. Jika objek adalah bilangan bulat, itu dianggap sebagai codepoint, dan dikonversi ke karakter sebelum penggabungan.


12

R, 38 37 36 byte

write(intToUtf8(diag(65:90),T),1,26)

(Penggunaan writeini terinspirasi oleh jawaban @ Giuseppe .)


3
Aku bersumpah aku mencobanya tetapi tidak berhasil! Sudah selesai dilakukan dengan baik. Anda dapat menyimpan 1 byte dengan menggunakan 65:90, karena huruf besar diizinkan.
user2390246

@ user2390246 Terima kasih telah menunjukkan!
Sven Hohenstein

Anda dapat menggunakan 1daripada ""mencukur byte lain.
Giuseppe

@ Giuseppe Terima kasih telah menunjukkan!
Sven Hohenstein

11

Vim, 29 byte

:h<_↵↵↵y$ZZ25o <Esc>{qqpblD+q25@q

Cobalah online!

↵ berarti tekan tombol kembali

<Esc> artinya tekan tombol keluar

Bagaimana cara kerjanya?

:h<_↵↵↵                             Open the help and navigate to the alphabet
       y$ZZ                         Copy the alphabet and close the help
           25o <Esc>                Abuse auto-indent and create a whitespace diagonal
                    gg              Go to the beginning of the file
                      qq            Record a macro
                        pb          Paste the alphabet and go to the first letter
                          lD        Go to the second letter and cut the rest of the alphabet
                            +       Go to the first non-blank character in the next line
                             q      Stop recording the macro
                              25@q  Run the macro for the remaining letters

Cobalah online! Anda dapat menggunakan ini untuk mendemonstrasikannya (V didasarkan pada Vim dan sebagian besar kompatibel dengan mundur kecuali tampaknya default autoindent dimatikan). Juga, yang kurang penting, Anda melewatkan +penjelasan Anda yang membuat saya sejenak.
nmjcman101

Terima kasih @ nmjcman101! Saya mencoba mencari cara untuk mencoba vim online dan tidak pernah tahu tentang V
jmriego

Anda bisa menggunakan bukan <Esc>. Itu terlihat sedikit lebih baik menurut saya.
Wheat Wizard

Anda dapat menyimpan satu byte jika Anda melakukannya {sebagai gantigg
DJMcMayhem

Anda bisa menggunakan 2↵ sebagai ganti ↵↵↵ dan mungkin Y bukannya y $
GB

11

Python 2 , 36 byte

n=65;exec"print'%*c'%(n,n);n+=1;"*26

Ini mengambil keuntungan dari spasi kosong yang tidak memengaruhi aturan penampilan .

Cobalah online!

Versi alternatif, 38 byte

n=1;exec"print'%*c'%(n,n+96);n+=1;"*26

Ini menghasilkan output yang tepat dari spec tantangan.

Cobalah online!


Bagaimana cara %*ckerjanya?
Leaky Nun

%*<identifier>membutuhkan dua argumen: panjang untuk memasangnya dan hal yang sebenarnya untuk diganti. Beberapa printfimplementasi bahkan memiliki fitur yang lebih tidak jelas, seperti yang %1$<identifier>saya gunakan di sini .
Dennis


8

Pure Bash, 13

echo {a..z}^K^H

Di sini ^Kdan ^Hadalah tab karakter kontrol ASCII tab vertikal dan backspace. The xxddump script ini adalah sebagai berikut - menggunakan xxd -runtuk menumbuhkan script yang sebenarnya:

00000000: 6563 686f 207b 612e 2e7a 7d0b 08         echo {a..z}..
  • {a..z}adalah perluasan bash brace standar untuk menghasilkan a b c ... z(dipisahkan ruang)
  • yang ^Ktab vertikal tetes kursor ke bawah satu baris ke posisi yang sama
  • yang ^Hbackspace memindahkan kursor kembali satu untuk menghapus ruang pemisah

Cobalah online . coldan tacdigunakan pada bagian footer untuk membuatnya ditampilkan dengan benar di jendela browser, tetapi ini tidak diperlukan di terminal reguler.


Jika karakter kontrol yang tidak lazim di atas dalam output terlalu banyak untuk Anda, maka Anda dapat melakukan ini:

Bash + utilitas umum, 24

echo {a..z}^K^H|col -x|tac

Di sini ^Kdan ^Hadalah tab karakter kontrol ASCII tab vertikal dan backspace. The xxddump script ini adalah sebagai berikut - menggunakan xxd -runtuk menumbuhkan script yang sebenarnya:

00000000: 6563 686f 207b 612e 2e7a 7d0b 087c 636f  echo {a..z}..|co
00000010: 6c20 2d78 7c74 6163                      l -x|tac

Cobalah online . Tab dan backspace vertikal mungkin tidak terlihat oleh browser Anda, tetapi ada di sana (tidak terlihat pada chrome, terlihat pada firefox).

  • col -x menerjemahkan kembali input sehingga karakter kontrol lucu diganti dengan spasi dan baris baru untuk memberikan hasil visual yang sama
  • untuk beberapa alasan colmenampilkan garis dalam urutan terbalik. tacmengoreksi itu.

Itu sangat keren :) (dan terima kasih kepada meta dan @Dennis untuk menyarankan pengurutan jawaban pada codegolf berdasarkan aktivitas alih-alih skor, untuk mendapatkan jawaban yang lebih baik alih-alih bahasa codegolf yang sangat membosankan): codegolf.meta.stackexchange. com / pertanyaan / 10127 / ... )
Olivier Dulac

Banyak terminal dirender ^Ksebagai kursor ke atas, yang merupakan perilaku yang colharus ditiru di sini.
Neil

@Neil ya, itu masuk akal - halaman colmanual menyebut VT "umpan balik baris". xterm, gnome-terminal dan terminal OSX semuanya drop-down satu garis ...
Digital Trauma

8

Brain-Flak , 124, 116 , 106 byte

((((()))))(((([][]){}){})[[]()]<>){(({})<(({})<({}<>({})({})<>)>)
{({}<(<>({})<>)>[()])}{}(<>[][]<>)>[()])}

Cobalah online!

Penjelasan:

Jawaban ini menyalahgunakan Stack Height Nilad , tetapi dengan cara baru yang belum pernah saya gunakan sebelumnya, yang sangat saya banggakan. Selain itu, jawabannya tidak terlalu pintar.

Jadi menganalisis karakter yang digunakan dalam seni ASCII ini, sebenarnya ada tiga nilai yang sering digunakan:

  • 32 (spasi),

  • 64 (tambahkan 64 ke N untuk mendapatkan huruf ke-N dari alfabet), dan

  • 10 (baris baru)

Serta 26. (jumlah loop) Dan angka-angka ini didorong di lokasi yang berbeda, jadi kami tidak bisa benar-benar menggunakan kembali nilai perantara untuk membuat angka besar lebih kecil. Dan mendorong semua untuk angka-angka ini adalah 86 byte kekalahan saja:

10:
((()()()()()){})

26:
((((()()()){}){}()){})

32:
((((()()()()){}){}){})

64:
(((((()()()()){}){}){}){})

Ini mengerikan. Jadi, inilah cara kami membuatnya lebih nyaman. Pendekatan yang jelas adalah dengan mendorong a 32ke tumpukan alternatif, yang membuat 32potongan kita menjadi: (<>({})<>)dan 64potongan kita menjadi (<>({})({})<>). Jika kita menggabungkan 32 push awal kami dengan 26 push awal kami , kami dapat menyimpan 8 byte secara kasar. (golf pertama saya).

Tapi di sinilah trik saya sangat bangga masuk Karena kita tidak menggunakan tumpukan alternatif untuk hal lain, kita mungkin juga golf 10. Untuk melakukan ini, kami akan mendorong 4 angka acak ke tumpukan tepat di awal program. Karena kami juga menekan 32, ini meningkatkan nilai []nilad, menjadi 5, yang membuat 10cuplikan kami jauh lebih nyaman. Dan beruntung bagi kita, itu benar-benar memungkinkan kita memasukkan potongan golf 32 dan 26 juga!

#Push 32, 26
(((((()()()()){}){}){})<>[(()()()){}])

#Push 10
((()()()()()){})

Menjadi

#Push 32, 26 (-2 bytes)
(((((())))))((([][][]){}()())[[]]<>)

#Push 10 (-6 bytes)
(<>[][]<>)

Jadi, inilah penjelasan terperinci:

# Push 1 four times
((((()))))

# Push 32 to main stack (to reuse later)...
((([][][]){}()())

# And then 26 to the alternate stack
[[]()]<>)

#While true
{

    # Keep track of the current TOS
    (({})<

        # Push [TOS, TOS + 64] (To get uppercase characters)
        (({})<({}<>({})({})<>)>)

        # TOS times...
        {
            # Decrement the loop counter, while pushing a space underneath it
            ({}<(<>({})<>)>[()])

        # Endwhile, pop zeroed counter
        }{}

        # Push 10 (newline)
        (<>[][]<>)

    # Push TOS - 1 back one
    >[()])

# Endwhile
}

7

V , 15 13 11 byte

¬azòÙr klDj

Cobalah online!

Penjelasan

¬az         ' Insert a-z
   ò        ' Recursively
    Ù       ' Duplicate current line down
     r      ' Replace the first character with a ' '
       kl   ' Move up a line and right
         D  ' Delete from here to the end
          j ' Move back down

7

Google Sheets, 67 65 byte

=ArrayFormula(IF(ROW(A1:Z)=COLUMN(A1:Z26),CHAR(96+ROW(A1:Z26)),))

= ArrayFormula (IF (ROW (A1: Z) = COLUMN (A1: Z26), CHAR (96 + ROW (A1: Z26)), ""))

Melepaskan klarifikasi yang akan dilakukan spasi putih apa pun, saya telah menggunakan sel yang tampak kosong

Keluaran

Beritahu saya jika ini tidak masuk hitungan, jika saya salah mengerti jumlah byte atau jika saya mengacaukan beberapa etika karena ini adalah posting pertama saya di sini.

Sunting: Ternyata saya dapat menyimpan 2 byte dengan meninggalkan "" karena lembaran Google akan menerima nilai jika kosong.


1
Selamat datang di PPCG :) Terlihat bagus! Pekerjaan bagus mengalahkan jawaban Google Sheets lainnya!
Stephen

7

APL (Dyalog) , 9 7 byte SBCS

-2 byte berkat petunjuk ngn.

↑⍨∘-⌸⎕A

[Cobalah online!] [TIO-j3o0ipjy]

⎕A huruf besar A lphabet

 antara masing-masing pasangan (elemen, daftar indeks), masukkan fungsi tersembunyi berikut:

↑⍨ dari elemen (surat) ambil ...

 itu…

- nomor indeks dinegasikan karakter, yaitu bahwa banyak karakter dari belakang, padding di depan dengan spasi.

Cobalah online!


Bagus. Upaya J saya agak lebih verbose. Apakah ada terjemahan dari kata kerja ini ke dalam J?
Jonah

@Jonah Verbs: is {.and is i.Adverbs: ¨is "0and is ~.
Adm

Terima kasih. Sepertinya terjemahan J kehilangan beberapa keringkasan:(a.{~97+i.26){."0~-1+i.26
Jonah

@ Adm output tidak terlihat seperti yang dibutuhkan; petunjuk: gunakan untuk menampilkan matriks yang tepat dan menghemat 2 byte
ngn

@ ngn Anda juga dapat mengembalikan (...) daftar string. Tapi saya akan selidiki. Sunting: Oh ya, tentu saja!
Adám

6

Oktaf, 25 19 atau 12? byte

[diag(65:90)+32 '']

Cobalah online!

Solusi lain yang diajukan oleh @LuisMendo (12 byte) yang saya uji di Windows versi Octave:

diag('a':'z')

Penjelasan:

Menghasilkan matriks diagonal dari a:z.


@LuisMendo Di tio saya tidak bisa menghasilkan hasil yang sama. Itu adalah ekspresi, yang dapat dievaluasi, yang menghasilkan hasil yang diinginkan :)
rahnema1

Solusi yang diusulkan oleh Luis tampaknya bekerja pada TIO sekarang ... Versi baru Octave mungkin?
Stewie Griffin

Atau versi baru tio !?
rahnema1

6

Java 8, 72 71 70 61 byte

o->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}

-1 byte dengan mengeluarkan huruf besar alih-alih huruf kecil.
-1 byte dengan mencetak langsung, alih-alih mengembalikan String multiline.
-8 byte terima kasih kepada @ OliverGrégoire dengan menggunakan printflangsung untuk menyingkirkannya String s="";. Dan juga -1 byte dengan mengubah ()->ke o->.

Coba di sini.


Implementasi naif lebih pendek dari yang saya kira. Anda dapat menyimpan byte dengan c=65(atau 64sebenarnya) sehingga Anda tidak perlu angka 3 digit. Bisakah mengembalikan array alih-alih string menghemat byte karena Anda dapat menghapus +"\n"?
TheLethalCoder

@TheLethalCoder Ah, tidak tahu kami diizinkan untuk mengeluarkan huruf besar. Membaca sepintas lalu. Terima kasih. Dan apa yang Anda maksud dengan menghasilkan array? Suka array array?
Kevin Cruijssen

1
@TheLethalCoder Tip apa pun boleh, jadi terima kasih. Tetapi dalam hal ini tidak akan lebih pendek. :)
Kevin Cruijssen

1
@ Musim Dingin Tentang saran pertama Anda, itu masih dibahas dalam meta-post ini , tetapi menilai berdasarkan suara saya kira itu memang diperbolehkan mulai sekarang. Sedangkan untuk yang kedua saya tidak yakin .. Rasanya seperti menipu / membengkokkan aturan, terutama setelah diskusi panas ini di komentar dari posting meta ini dan jawaban .
Kevin Cruijssen

1
62 byte: ()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}menggunakan ide yang sama seperti pada tantangan lain .
Olivier Grégoire

5

Jelly ,  10  9 byte

-1 byte terima kasih kepada Dennis (hindari pengurangan Jdengan menggunakan rentang yang diturunkan 26Ḷ,, secara langsung)

26Ḷ⁶ẋżØaY

Program lengkap yang mencetak hasilnya.

Cobalah online!

( ØaJ’⁶ẋżuntuk 7 adalah tautan monadik yang mengembalikan daftar daftar karakter, tapi itu seperti [["a"],[" ","b"],[" ","c"],...]yang mungkin tidak bisa diterima.)

Namun, saya tidak akan terkejut jika ada cara yang lebih pendek yang belum saya pikirkan!

Bagaimana?

26Ḷ⁶ẋżØaY - Main link: no arguments
26        - literal 26
  Ḷ       - lowered range = [0,1,2,...,26]
   ⁶      - literal space character
    ẋ     - repeat          [ [],      [' '],      [' ',' '],    ...,  [' ',' ',...,' ']]
      Øa  - yield lowercase alphabet
     ż    - zip             [[[],'a'],[[' '],'b'],[[' ',' '],'c'],...,[[' ',' ',...,' '],'z']]
        Y - join with newlines  [[],'a','\n',[' '],'b',\n',[' ',' '],'c','\n',...,'\n',[' ',' ',...,' '],'z']
          - implicit print (smashes the above together, printing the desired output)

Saya bahkan mengizinkan [["a"],[" ","b"],[" "," ","c"],...]karena daftar karakter adalah definisi alternatif untuk string, tetapi tuple tampaknya tidak cocok :)
Stephen

Ya itulah yang saya pikirkan.
Jonathan Allan

1
... perhatikan bahwa di atas masing-masing "..."adalah daftar karakter, jadi sebenarnya itu [[['a']],[[[' '],['b']],[[' ',' '],['c']],...]karena Jelly tidak memiliki string, hanya daftar.
Jonathan Allan

26Ḷ⁶ẋżØaYmenghemat satu byte.
Dennis

ØaJ’⁶ẋżuntuk 7, untuk versi alternatif Anda.
Leaky Nun


5

Alice , 22 20 byte

52E&waq'a+q&' d&o]k@

Cobalah online!

Meskipun outputnya berupa string, ternyata mode ordinal bukanlah cara untuk menghadapi tantangan ini.

Penjelasan

52E&w             k@     do 26 times
     a                   push 10 (LF)
      q                  push current tape position (initially zero)
       'a+               add the ASCII code for "a"
          q&'            push 32 (space) a number of times equal to tape position
              d&o        output entire stack
                 ]       move tape position one space to the right

Solusi sebelumnya

["za/?rO&
' !]\"ohkw@/

Cobalah online!

Saya melewati sekitar sepuluh solusi 23-byte sebelum saya dapat menemukan yang ini.

Penjelasan

Program ini menggunakan kaset untuk melacak jumlah ruang yang akan dihasilkan. Mode kardinal dan ordinal menggunakan pita yang sama, tetapi mereka memiliki kepala pita terpisah. Kedua mode memiliki interpretasi yang berbeda dari apa yang mereka lihat di rekaman itu, dan program sepenuhnya memanfaatkan perbedaan itu.

Perintah dijalankan dalam urutan berikut:

[                   move cardinal tape position left
 "za"               push this string (as a string, since the final " is in ordinal mode)
     r              interpolate to entire range (i.e., the lowercase alphabet backward)
      h             split first character from string
       &            for each character in string: push that character and...
        w                                         push current address onto return address stack
         ' !        (cardinal mode) place 32 (space) at current cardinal tape position
            ]       (cardinal mode) move cardinal tape position right
             ?      (back to ordinal mode) read string from tape starting at ordinal tape position
                    this string will consist of n-1 spaces.
              o     output string of spaces
               O    output top of stack (current letter) followed by newline
                k   return to pushed return address. 
                    after 26 times through this loop, the return address stack will be empty and this is a no-op.
                 @  terminate

5

Brainfuck, 103 byte

>-<-----[[<+>->>+++>-<<<]>++]<<<<<<<<<[-]>>>-[<[-]<[-]<[>+>+<<-]>>[<<+>>-]<[>>>>.<<<<-]<+>>>>.+>>.<<<-]

Cobalah online!

Lokasi variabel entah bagaimana diperbaiki.

Penjelasan

>-<-----[[<+>->>+++>-<<<]>++]   Initializes the tape.
<<<<<<<<<[-]>[-]>>-             Resets variables that
                                need to be at 0.
[                               For loop (25 to 0).
 <[-]<<[>+>+<<-]>>[<<+>>-]      Copy the spaces count in
                                order to use it in a loop.
 <[>>>>.<<<<-]                  Prints the spaces.
                                Prints the character followed
 <+>>>>.+>>.<<<-                by a new line. Also decrements
                                the main loop counter.
]

5

Google Sheets, 69 byte

=ArrayFormula(JOIN("
",REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26))))

Tidak ada yang rumit di sini. Satu-satunya trik adalah menggunakan ArrayFormuladan ROW(A1:A26)mengembalikan 26 nilai yang berbeda untuk JOINfungsi tersebut. Output terlihat seperti ini:

Keluaran


Saya pikir Excel 2016 dapat melakukan hal yang sama dengan TEXTJOINtetapi saya tidak bisa memasukkan rumus array dalam versi online dan hanya memiliki 2013 sendiri. Rumusnya harus seperti ini:

=TEXTJOIN("
",FALSE,REPT(" ",ROW(A1:A26)-1)&CHAR(96+ROW(A1:A26)))

Memasukkannya sebagai rumus array ( Ctrl+ Shift+ Enter) menambahkan tanda kurung keriting { }di kedua sisi, sehingga menjadi 67 byte. Siapa pun yang dapat memverifikasinya berfungsi dipersilahkan menggunakannya sebagai jawaban mereka sendiri.


5

Seed , 6014 byte

Saya tidak berpikir ini akan memenangkan penghargaan apa pun, tetapi hanya untuk bersenang-senang, inilah solusi di Seed.

86 11103250503694729158762257823050815521568836599011209889044745493166180250197633623839266491438081837290079379263402288506775397211362446108152606095635373134468715450376738199004596861532212810083090232034321755895588102701453625219810339758989366211308223221344886043229936009486687653111291562495367476364760255760906228050130847228170228716790260998430434027546345063918859356161024202180254514539438087787769611000320430464740566450402368450792375043801526494811596087812709169139468697779440918934518195843690439213251884693846598754642076364755341359062651237754916053099089619667382845958005035392458577634784453744876558142057256976895330859887974064083588368087014591508237946214519271550243549214199679364098489146944338807874570414584343165070707969101892779772740177526390597395955859236589308394889243501541206981604661264930842784772121710695027991351718061777696274815931123342985242351444203296855501870888626347939456384376808446806093364176576945969539054970975848477876079897476093353730443488664472826635815956526890935049081522728044807877072639829234224838977148057506785320443165975265560224605597481381188291535996775480326796788286452216432605854564432262547835415260058472165825285438444435690700488258778785613363062417500848996527077259315494936037544655054620369560227407957368700650031346856230643646273909094915618471799926504192999361174763592054723307855670381682927214117502862645460031555724588536036895597768493827964819026940533784490457441244859937078155137620826821294513857153097135094397278852300032685608169642137925241118197368192392427097109982751185030229544527638686131131545529690698706313745703838144933923021851042677941879847025167921010148923860660695145106913052517930707522151230705792709484338746351589089180137363986003757314611932324492978098101655359729841878862276799317010824753645947659706175083519817734448003718088115457982394423932136760435046136644679525408371158980833993157988971884061469882136904103033944270884697456159261033500286722891139158500027351042265757431184139617566089023339480051231776345929815102059539844917563709940188668873305602146506284075271989710388430531233185164106985265575418252638186398535149202928422854319253947591044830747981534342833040219194969504971457701296402664807369043224201667623773161453335066484102800249947322601702575025462427139266561015140950621152993027466758026351218924607290766894274223554418125824416921899080393405328694235821466034161071834073874727856768719898425047229002772806527172294625623026601313091815217479540688812203850300478145319935479599086534606210099372526810614742385909275512758349679098012967475393301857434507012875239092688018536028125644341148882858752275129016876257290205949225918496182271679312996010157634568807332616541938310641844258434083838017690572891417189135014450484203635258935943095637185443145042430274553211816422809756194554145177421779800554334935224073734034988935790096239926730047370699006392111034056662661567902477446646680125183082979598538506383502737734442490068661537425714549752783861222862366340979663873475326752237893690641570287341027097775099918958849864419430754493042534812120486345363285167685811903366691676146427476942948696624274431993989133835880516551024369474029197791751838810883302415448112237526350703063618171739262753474029252659418383385834751808940073804107171146665382663467460066719556797639176747423279761528061219482681051780434845070421974558638870988408449698678976622755518024906714421419806347234183574860655249471877105716127767795785164699804819127058322715857697491583787449703283625085118896433923054087238479453964363805045497229148813441732912067120594705269402106426011497763749556561398150139686331615167139081591537739333533146667211063179804707883556569241294269430626179579760506971066676011512530066694518309930078451295032445835025178124213221937594928472509588116557231122849491576207720183829735710200290762251904109318007206980645946249679357907549498615310165588678201768095297568708803842208357473777731751349499510116345704811971207818719582793964185192140178454948686109674659005978400204479072321714207828018696339659886683414074211823497880135255138161141724546221354224299071581607979907417508104234534779573666933024250229754952685174194168516481670999039048675109878524061868078078216337487277443941946961426121900907734301692962783139932352047932263834773963592317279425421954035566305805348109175553209815893678595198155962166838761859540063188209014774346841267440789072833797121217961797443744676162541668802226500817146368372390178287945076657776275930590173768326046610094573983886099504933977126798348879838826160714899283593774855907724617352862079916515034033299006419237012240730789008999523238851913897908225482003661109026061857228300111070725651744312468140016983078297938157227595743419983763920290850801438187869169473456288283458163865462359588316419331445070232596307970490434468929587726795603069137946085898481642595124580643542063564880389350236902538522311931690905858973696558714577085714396738993556273941292496636824719451697631982422926675238248502170501569627556395875619564600587531422890212003952929325067813498958390095519100963598626450443103780781917045489137526377521695121594716424797216910752252094749957224424042047863869830458287114846161217532552045343745235776511344577755412402833175338541217548987687334493461236111032661075185714361252784989689657180878190058132112701323898697673356854132286586129946906160482715702618768869398700713988301485421822519104930442450343377920756456344715552821899659777521739288202633751258303637433110490141551780764889912485271829265224821750882760152112536985349681370761157202793523201156381835717321637420939424473215237574260806475544972321933149796156065126465186203580256364372579422208318560608817806013462242728082475787319168695978160861791054731154820533251279706873332364894538291172324730671914083193733203570060223897442373172904974570329139578763294810924815364789498523721281918680145538278976651264

Ini diterjemahkan ke program Befunge berikut:

vaa{       @>
v#      g02<v
>30g20g`   |
10g-:!v!: < >#<
v,:g02_40g,1- ^
>1+20p$91+, v


4

Tambahkan ++ , 1069 byte

+97
&
-87
&
+22
&
+66
&
-88
&
+22
&
&
+67
&
-89
&
+22
&
&
&
+68
&
-90
&
+22
&
&
&
&
+69
&
-91
&
+22
&
&
&
&
&
+70
&
-92
&
+22
&
&
&
&
&
&
+71
&
-93
&
+22
&
&
&
&
&
&
&
+72
&
-94
&
+22
&
&
&
&
&
&
&
&
+73
&
-95
&
+22
&
&
&
&
&
&
&
&
&
+74
&
-96
&
+22
&
&
&
&
&
&
&
&
&
&
+75
&
-97
&
+22
&
&
&
&
&
&
&
&
&
&
&
+76
&
-98
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
+77
&
-99
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
+78
&
-100
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+79
&
-101
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+80
&
-102
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+81
&
-103
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+82
&
-104
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+83
&
-105
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+84
&
-106
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+85
&
-107
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+86
&
-108
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+87
&
-109
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+88
&
-110
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+89
&
-111
&
+22
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
+90
&
P

Cobalah online!

Ya. Itu hardcode. Saya yakin ada cara yang lebih baik, dan jika Anda ingin menemukannya, silakan, tetapi cara ini tampaknya bekerja dengan baik karena Add ++ sulit untuk bekerja dengan memori.


4

R , 59 49 47 byte

-10 byte berkat djhurio

-2 byte terima kasih kepada Sven Hohenstein

write("diag<-"(matrix("",26,26),letters),"",26)

Mencetak ke stdout. Dikalahkan oleh user2390246

Cobalah online!


Anda dapat mengganti 26^2dengan 676untuk menyimpan byte.
Gagang Pintu

2
m=matrix("",26,26);diag(m)=letters;write(m,'',26)(49 byte)
djhurio

Untuk jumlah byte yang sama, Anda dapat mencetak matriks menggunakancat(m,fill=27)
JAD

1
@djhurio "Untuk jumlah byte yang sama"
JAD

1
@ Giuseppe Perintah "diag<-"(x, y)ini mirip dengan diag(x) <- y. Nilai tidak ditugaskan ke variabel tetapi dikembalikan.
Sven Hohenstein

4

> <> , 46 44 42 byte

"A"0::?!v" "o1-40.
*(?!;30.>~$:oao1+$1+:d2

Cobalah online!

Penjelasan

Line 1:
"a"0::?!v" "o1-40.
"a"0                       :Initialize the stack items (print char and space count)
    ::?!v                  :Duplicate the space count, check if 0, go down if 0
         " "o1-            :Print a space then take 1 from the space count
               40.         :Jump to codepoint row 0 col 4 (this restarts the loop)
Line 2:
*(?!;30.>~$:oao1+$1+:d2
        >~                 :Remove the zeroed space counter off the stack
          $:oao1+          :Place our print char on the top of the stack, duplicate and print it, print a new line, increase it by 1; a->b->c etc
                 $1+       :Place our space count on the top of the stack and increase it by 1
*                   :d2    :Duplicate the space counter, add 26 to the stack
 (?!;                      :Add 0 to the stack, less than compare 0, if the counter is above 0 it terminates
     30.                   :Jump to the first line, (back to printing spaces)

Ini adalah pengambilan yang sama sekali berbeda dari 46 byte saya sebelumnya jadi saya sudah memasukkan TIO ke satu-satunya juga. 46 byte Cobalah online!

Di bawah ini adalah tautan ke kiriman Emigna, itu adalah jawaban pertama> <> tapi saya yakin jawaban saya cukup berbeda (dan menyimpan beberapa byte) untuk menjamin yang kedua.

Jawaban Emigna


Dan sekarang kita terikat. Terbaik jika Anda bermain golf satu atau dua byte untuk memastikan;)
Emigna

@Emigna, saya pikir 3 byte yang disimpan akan cukup: o kira saya punya beberapa pekerjaan yang harus dilakukan :)
Teal pelican

4

Haskell , 66 65 58 57 45 43 byte

Terima kasih kepada @nimi dan @maple_shaft karena telah menghemat 12 14 byte.

unlines[(' '<$['b'..n])++[n]|n<-['a'..'z']]

Cobalah online!


1
Anda akan mendapatkan skor yang sama tetapi kadang-kadang Anda dapat menggunakan <$alih-alih mereplikasi:(' '<$[1..(fromEnum n-97)])
maple_shaft

2
Anda dapat mengubah saran @ maple_shaft menjadi (' '<$['b'..n]).
nimi

Karena fungsi yang tidak disebutkan namanya diizinkan, tidak perlu f=.
nimi

2
Btw, byte yang sama menghitung: ['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n'].
nimi

4

PHP, 23 byte

Catatan: menggunakan pengkodean IBM-850.

<?=join(~¶,range(a,z));

Jalankan seperti ini:

echo '<?=join(~¶,range(a,z));' | php -n;echo
# With default (utf8) terminal:
echo '<?=join("\v",range(a,z));' | php -n;echo

Penjelasan

Buat larik semua karakter alfabet, gabungkan dengan tab vertikal sebagai lem.


4

brainfuck , 80 byte

++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++[->[<<<.>>>->+<]>+[-<+>]<<<.+<<.>>>]

Cobalah online!

Diformat:

++++++++[>+>++++
>++++++++>+++<<<
<-]>++>>+>++[->[
<<<.>>>->+<]>+[-
<+>]<<<.+<<.>>>]

Menggunakan fungsi generasi perkalian sederhana untuk menaruh beberapa konstanta dalam memori, kemudian mengulangi proses pencetakan ruang N kemudian 'A' + Nuntuk N = 0..25.

Beranotasi:

INITIALIZE TAPE: 10 32 65 >26< 0 0
C_NEWLINE: 10
C_SPACE: 32
V_ALPHA: 65
V_COUNTER: 26
V_PREFIX: 0
V_PREFIX_TEMP: 0
++++++++[>+>++++>++++++++>+++<<<<-]>++>>+>++

WHILE V_COUNTER != 0  [-
   "PRINT C_SPACE REPEATED V_PREFIX TIMES"
   "V_PREFIX_TEMP = V_PREFIX"
     V_PREFIX TIMES  >[-
       PRINT C_SPACE <<<.>>>
       INCREMENT V_PREFIX_TEMP >+<
     ]
   "V_PREFIX = V_PREFIX_TEMP PLUS 1"
     V_PREFIX_TEMP PLUS 1 TIMES  >+[-
       INCREMENT V_PREFIX <+>
     ]
   PRINT C_ALPHA <<<.
   INCREMENT C_ALPHA +
   PRINT C_NEWLINE <<.
>>>]

4

RProgN 2 , 5 byte

aS`\x0B.

\ x0B adalah Vertical Tab Literal

Ini hanya mengambil huruf kecil, membaginya, dan menggabungkannya dengan tab vertikal. Ini menghasilkan efek yang dimaksudkan pada Terminal Bash tertentu.

Menjalankan skrip

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.