Cetak / Keluarkan L-phabet


65

Terinspirasi oleh George Gibson's Print a Tabula Recta .

Anda harus mencetak / menampilkan teks ini:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

(Ya, saya mengetiknya dengan tangan)

Anda diizinkan menggunakan semua huruf kecil dan bukan semua huruf besar.

Namun, pilihan case Anda harus konsisten di seluruh teks.

Aturan / Persyaratan

  • Setiap pengajuan harus berupa program atau fungsi lengkap. Jika itu adalah suatu fungsi, itu harus dapat dijalankan dengan hanya perlu menambahkan panggilan fungsi ke bagian bawah program. Hal lain (mis. Tajuk dalam C), harus dimasukkan.
  • Jika memungkinkan, berikan tautan ke situs tempat program Anda dapat diuji.
  • Program Anda tidak boleh menulis apa pun STDERR.
  • Celah Standar dilarang.
  • Program Anda dapat menampilkan dalam hal apa pun, tetapi harus dicetak (bukan array atau serupa).

Mencetak gol

Program-program dinilai berdasarkan byte, dalam UTF-8 secara default atau serangkaian karakter pilihan Anda.

Akhirnya, jawaban dengan byte terkecil akan menang.

Pengajuan

Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:

# Language Name, N bytes

di mana Nukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Misalnya:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:

# Perl, 43 + 2 (-p flag) = 45 bytes

Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

Papan peringkat

Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa.



5
Bisakah output (sebagai nilai balik dari suatu fungsi) menjadi array baris?
Gagang pintu

@ Doorknob saya akan mengatakan tidak.
Leaky Nun

@ GeorgeGibson Ya.
Leaky Nun

@LeakyNun Apakah baris baru tertinggal diizinkan?
Jakube

Jawaban:


61

Excel, 19.604 byte

=CHAR(64+MAX(COLUMN(),ROW()))

Rekatkan formula ini A1, lalu seret ke seluruh A1:Z26.

Jumlah byte:

  1. Rumusnya adalah 27 byte.
  2. Anda harus menyalinnya 26 ^ 2 kali. 27 * 26 * 26 = 19604.
  3. Saya dan yang lainnya berpikir skornya harus lebih rendah karena Anda tidak perlu mengetik formula lagi dan lagi. Saya sekarang berpikir itu tidak relevan - kami menghitung ukuran program, bukan pekerjaan yang dihabiskan untuk menulisnya.
  4. Sebagai perbandingan - lihat 28.187 karakter ini jawaban JS - jelas, seseorang membuatnya daripada mengetik semua ini, tetapi tidak mengubah ukurannya.

22
ini membuatku tertawa, kamu harus memposting di meta sking bagaimana cara menghitung ini
Rohan Jhunjhunwala

19
Hitungan yang adil untuk ini adalah 45: (1) ketik A1:Z26di Name Box (kiri bilah rumus) [ 7 byte]; (2) ketik =CHAR(64+MAX(COLUMN(),ROW()))+ masukkan di bilah rumus [ 30 byte]; (3) ketik Alt E I D Alt E I Runtuk mengisi rentang yang dipilih [ 8 byte]. Total 7 + 30 + 8 = 45 .
Joffan

8
Saya tidak berpikir bahwa menghitung autocomplete sebagai jumlah byte yang lebih rendah. Kemudian saya bisa mengecilkan java saya ke bawah dengan berdebat netbeans autocomplete. Saya pikir pengukuran dengan penekanan tombol 46 penekanan tombol lebih adil
Rohan Jhunjhunwala

3
@rohan I, untuk satu, akan baik-baik saja dengan Anda memanggil Java + autocomplete bahasa.
John Dvorak

5
@Joffan [A1:Z26]="=CHAR(64+MAX(COLUMN(),ROW()))"adalah 40 byte dan masih elegan
Anastasiya-Romanova 秀

39

Vim, 43 byte

:h<_↵jjYZZPqqlmaYp`ajyl:norm v0r♥"↵`ajq25@q

Di sini mewakili Return ( 0x0a) dan mewakili Ctrl-R ( 0x12).

Tidak sesingkat jawaban Tabula Recta saya, tapi ...

masukkan deskripsi gambar di sini


3
apa. itu. neraka. aku s. ini. terkutuk. sihir.
haneefmubarak

1
Apa halaman bantuan yang Anda buka? When I do h<_↵It :help at_t
bring

Saya membuka v_b_<_exampledi Vim 7.4 untuk Cygwin.
Lynn

@haneefmubarak Ya, itu adalah keajaiban Vim.
Chromium

28

Jelly, 6 byte

ØA»'j⁷

Coba di sini. Kalau saja saya tidak malas kemarin dan menerapkan alternatif satu byte untuk j⁷(bergabung dengan baris baru) ...

ØA      The uppercase alphabet.
  »'    Table of max(x, y).
    j⁷  Join by newlines.

7
Argh, Ninja beberapa menit ... Alternatif itu tidak akan membantu karena rantai akan bercabang.
Dennis

Pertanyaan bodoh, tetapi jika ini 6 byte, set karakter apa yang ada di dalamnya?
Tn. Lister

@ Mr.Lister: Saya menambahkan tautan ke halaman Jelly code di judul jawaban.
Lynn

Bergabung dengan linefeed adalah Y.
PurkkaKoodari

@ Pietu1998 Saya pikir Yposting tanggal tantangannya
caird coinheringaahing

17

brainfuck, 103 96 95 91 87 byte

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

Ini menggunakan konstanta brainfuck Esolangs 'untuk 64 . Cobalah online!


16

/// , 141 94 92 82 byte

/:/\\\\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://:/\/a#
\/a\///A/#

Cobalah online: Demonstrasi

Bahasa yang cukup menyenangkan.

Penjelasan:

Kode singkat untuk hanya mencetak kotak 4x4:

/:/\\\\A//#/:b:c:d://:/\/a#
\/a\///A/#

Penggantian pertama /:/\\\\A/menggantikan :dengan \\A. Ini memberi:

/#/\\Ab\\Ac\\Ad\\A//\\A/\/a#
\/a\///A/#

Kemudian /#/\\Ab\\Ac\\Ad\\A//\\A/ganti #dengan \Ab\Ac\Ad\A:

/\\A/\/a\Ab\Ac\Ad\A
\/a\///A/\Ab\Ac\Ad\A

Sekarang /\\A/\/a\Ab\Ac\Ad\A<newline>\/a\//ganti masing-masing \Adalam kode selanjutnya dengan /aAbAcAdA<newline>/a/, jadi ini menghasilkan:

/A//aAbAcAdA
/a/b/aAbAcAdA
/a/c/aAbAcAdA
/a/d/aAbAcAdA
/a/

Sekarang bagian pertama /A//menghapus semua As.

abcd
/a/b/abcd
/a/c/abcd
/a/d/abcd
/a/

Lima karakter pertama abcd<newline>dicetak. Perintah selanjutnya /a/b/diganti adengan b, menghasilkan:

bbcd
/b/c/bbcd
/b/d/bbcd
/b/

Sekali lagi lima karakter pertama bbcd<newline>dicetak. Perintah selanjutnya /b/c/diganti bdengan c:

cccd
/c/d/cccd
/c/

Sekali lagi lima karakter pertama cccd<newline>dicetak. Perintah selanjutnya /c/d/diganti cdengan d:

dddd
/d/

Lima karakter pertama dddd<newline>dicetak. Dan perintah selanjutnya /d/tidak lengkap dan karena itu tidak melakukan apa pun.


Sial, ini pintar. Kerja bagus. :) Adakah ide untuk solusi sesuai dengan tantangan tabula recta ini?
Martin Ender

@ MartinEnder Tidak, belum. Saya akan melihatnya di malam hari. Perpanjangan istirahat makan siang sudah menjadi satu jam penuh (dua kali lebih banyak dari biasanya) karena tantangan ini.
Jakube

Saya menemukan sesuatu (dengan banyak bantuan dari ide-ide Anda, terutama cara Anda memodifikasi instruksi selanjutnya untuk memproses satu karakter setelah yang lain).
Martin Ender

15

Dyalog APL , 11 byte

A[∘.⌈⍨⍳26]

A[... ]pilih elemen dari alfabet huruf besar sesuai dengan
    ∘.⌈⍨tabel maksimum
    ⍳2626 bilangan bulat pertama

TryAPL online!


10

Mathematica, 69 65 57 byte

Disimpan 8 byte karena @MartinEnder .

FromCharacterCode[64+Max~Array~{26,26}]~StringRiffle~"
"&

Fungsi anonim. Tidak mengambil input dan mengembalikan string sebagai output. Pada dasarnya hanya char('A' + max(x, y))untuk semua x , y dari 1 hingga 26.


5
Selamat atas 10k!
Loovjo

9

/// , 348 byte

/|/\/\///v/NNN|u/MMM|t/LLL|s/WXYZ|r/OOO|q/KLMa|p/RRRR|o/QQQQ|n/PPPP|m/SSS|l/EFGc|k/RSTb|j/UUUU|i/TTTT|h/WWW|g/VVV|f/XXXX|e/ZZZZZ|d/YYYYY|c/HIJq|b/UVs
|a/NOPQk/ABCDlBBCDlCCCDlDDDDlEEEElFFFFFFGcGGGGGGGcHHHHHHHcIIIIIIIIIJqJJJJJJJJJJqKKKKKKKKKKqttttMauuuuMavvvvNarrrrrPQknnnnQkooooQkppppRkmmmmmmSTbiiiiibjjjjjbgggggggVs
hhhhhhhWs
ffffffYZ
dddddZ
eeeeeZ

Cobalah online!

Saya telah menggunakan teknik yang sama untuk membangun ini sebagai / / / jawaban saya untuk tantangan ini didasarkan pada . Namun, saya harus memperbaiki skrip CJam karena tidak benar menangani substring yang dapat tumpang tindih sendiri.


Saya benar - benar perlu belajar bahasa ini ...
George Gibson

9

Retina , 41 byte

Hitungan byte mengasumsikan penyandian ISO 8859-1. Linefeed terkemuka sangat penting.


26$*Z
{`^[^A].+
$&¶$&
}T0-2`L`_L`^(.)\1+

Penjelasan


26$*Z

Setel string menjadi 26 salinan Z. Kemudian {...}instruksikan Retina untuk melakukan dua instruksi yang tersisa dalam satu lingkaran sampai string berhenti berubah.

{`^[^A].+
$&¶$&

Gandakan baris pertama jika tidak dimulai dengan A.

}T0-2`L`_L`^(.)\1+

Ini adalah tahap transliterasi. Ini hanya diterapkan jika string dimulai dengan setidaknya dua salinan dari karakter yang sama. Jika demikian, semua kecuali yang terakhir dari karakter tersebut dikurangi. Penurunan terjadi dengan memetakan L(huruf besar) ke _L(kosong diikuti dengan huruf besar). "Semua kecuali yang terakhir" diindikasikan oleh batas -2yang memberitahu Retina hanya untuk mentransliterasi semua karakter hingga yang kedua hingga terakhir dalam pertandingan.

Cobalah online!


2
Selamat 100k! :)
Yytsi

8

Haskell, 35 byte

a=['A'..'Z']
unlines$(<$>a).max<$>a

8

Python 2, 59 byte

n=0;exec'print bytearray([n+65]*n+range(n+65,91));n+=1;'*26

Uji di Ideone .


7

R, 58 byte

l=LETTERS;for(i in 1:26){l[2:i-1]=l[i];cat(l,"\n",sep="")}

Berkat prioritas operator, 2:i-1setara dengan 1:(i-1). Menggunakan konstanta bawaan LETTERSyang berisi alfabet dalam huruf besar. Segala sesuatu yang lain cukup jelas.
Pemakaian:

> l=LETTERS;for(i in 1:26){l[2:i-1]=l[i];cat(l,"\n",sep="")}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

Seorang pengguna baru memiliki saran untuk memasukkan jawaban Anda di sini
Kritixi Lithos

7

Sesos , 25 byte

0000000: 2829c0 756fc6 aecae2 aecd9c 39e09e 099c63 7d8e3d  ().uo.......9....c}.=
0000015: 65a7c0 39                                         e..9

Cobalah online! Periksa Debug untuk melihat kode SBIN yang dihasilkan.

Perakitan Sesos

File biner di atas telah dihasilkan dengan merakit kode SASM berikut.

add 26
jmp
    jmp
        rwd 1, add 1, rwd 1, add 1, fwd 2, sub 1
    jnz
    rwd 2, add 64
    jmp
        fwd 2, add 1, rwd 2, sub 1
    jnz
    fwd 1, sub 1
jnz
fwd 1
jmp
    jmp
        rwd 1, add 1, fwd 1, sub 1
    jnz
    nop
        rwd 1
    jnz
    fwd 1
    jmp
        put, add 1, fwd 1
    jnz
    fwd 1
    jmp
        put, fwd 1
    jnz
    add 10, put, get
    nop
        rwd 1
    jnz
    fwd 1
; jnz (implicit)

Bagaimana itu bekerja

Kami mulai dengan menginisialisasi rekaman ke ABCDEFGHIJKLMNOPQRSTUVWXYZ. Ini sebagai berikut.

Menulis 26 ke sel, meninggalkan kaset dalam keadaan berikut.

                                                       v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 0

Selama sel di bawah kepala data bukan nol, kami melakukan hal berikut.

Salin nomor ke dua sel ke kiri dan tambahkan 64 ke salinan paling kiri.

                                                   v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 90 26 0 0

Pindahkan salinan paling kiri ke lokasi asli, lalu kurangi 1 dari salinan paling kanan.

                                                     v
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 90 0

Proses berhenti setelah 26 iterasi, karena salinan paling kanan adalah 0 saat itu. Kami memindahkan sel ke kanan, sehingga keadaan akhir rekaman setelah inisialisasi adalah sebagai berikut.

     v
0 0 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Sekarang kita siap untuk menghasilkan output, dengan mengulangi proses berikut sampai sel di bawah kepala data nol.

Pertama, kami memindahkan konten sel di bawah kepala data satu unit ke kiri, lalu pindah ke kiri hingga sel terakhir dengan konten yang tidak nol.

   v
0 65 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Sekarang, kita mencetak semua sel, mulai dengan yang di bawah kepala data dan bergerak ke kanan hingga kita menemukan 0 sel, menambah setiap sel yang dicetak setelah mencetaknya. Setelah mencetak A, rekaman itu terlihat sebagai berikut.

     v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Sekarang kita bergerak ke kanan, kembali mencetak semua sel sampai 0 sel di temui. Setelah mencetak BCDEFGHIJKLMNOPQRSTUVWXYZ, rekaman itu terlihat sebagai berikut.

                                                                                  v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Sekarang, kita menulis 10 ke sel saat ini, mencetak karakter yang sesuai (linefeed) dan nol sel dengan panggilan masuk getpada input kosong, meninggalkan rekaman tidak berubah.

Akhirnya, kami pindah ke yang bukan nol terakhir ke kiri, menyiapkan rekaman untuk iterasi berikutnya.

        v
0 66 0 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Iterasi berikutnya serupa. Kami pertama-tama memindahkan 66 satu sel ke kiri, mencetak 66 sel ( BB) dan menambahnya menjadi 67 , lalu mencetak sel-sel yang tidak nol yang tersisa ke kanan ( CDEFGHIJKLMNOPQRSTUVWXYZ), dan akhirnya menempatkan kepala data di 67 , meninggalkan rekaman sebagai berikut .

           v
0 66 66 0 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 0

Setelah 24 iterasi lagi dan setelah pencetakan ZZZZZZZZZZZZZZZZZZZZZZZZZZdan pemberian baris, kaset dibiarkan dalam kondisi berikut.

                                                                                  v
0 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 91 0 0

Memindahkan kepala data ke kiri ke sel non-nol berikutnya akan membiarkannya pada posisi saat ini, sehingga sel di bawahnya adalah 0 dan loop berakhir.


7

J, 13 byte

u:65+>./~i.26

Penerjemah online .

Penjelasan

u:65+>./~i.26
         i.26  generate [0 1 ... 25]
       /~      build a table...
     >.        ...of maximum
  65+          add 65 to each element
u:             convert to unicode

6

Matlab / Oktaf, 43 39 byte

1 byte dihapus berkat gagasan @ beeker tentang penggunaan [...,'']untuk mengonversi ke char.

@()[91-rot90(gallery('minij',26),2),'']

Ini adalah fungsi anonim yang mengembalikan array char 2D.

Cobalah di Ideone .

Penjelasan

gallery('minij',...) memberikan matriks di mana setiap entri sama dengan minimum indeks baris dan kolomnya:

 1     1     1     1  ...
 1     2     2     2
 1     2     3     3
 1     2     3     4
 ...

Ini diputar 180 derajat dengan rot90(...,2):

26    25    24    23  ...
25    25    24    23
24    24    24    23
23    23    23    23
...  

The 91-...operasi memberikan kode ASCII dari huruf besar:

65    66    67    68
66    66    67    68
67    67    67    68
68    68    69    68 ...
...

Akhirnya [...,'']digabungkan secara horizontal dengan string kosong. Ini memiliki efek konversi ke char.


1
Penggunaan yang sangat pintargallery
Suever

2
Sayang sekali tidak ada gallery('maxij',...), ya? ;)
Martin Ender

@ MartinEnder Benar-Benar! :-) BTW, saya menunggu built in Mathematica ...
Luis Mendo

Anda menunggu lama, ini adalah tantangan berbasis string. : P
Martin Ender

6

PowerShell v2 +, 76 52 40 byte

65..90|%{-join[char[]](,$_*$i+++$_..90)}

Loop dari 65ke 89. Setiap iterasi, kami membangun sebuah array menggunakan koma-operator yang terdiri dari angka saat ini $_dikalikan dengan variabel pembantu pasca kenaikan $i++, disatukan dengan array nomor saat ini $_ke 90. Itu dienkapsulasi dalam sebuah array char-array, dan -joined bersama menjadi sebuah string. Misalnya, untuk iterasi pertama, array ini akan setara dengan 65..90, atau seluruh alfabet. Iterasi kedua adalah 66+66..90, atau seluruh alfabet dengan Bdiulang dan tidak A.

Itu semua ditinggalkan di pipeline di akhir program (sebagai array), dan pencetakan ke konsol adalah implisit (default .ToString()untuk array dipisahkan melalui baris baru, jadi kami mendapatkannya secara gratis).

PS C:\Tools\Scripts\golfing> .\print-the-l-phabet.ps1
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

6

C #, 147 byte

void e(){for(int i=0,j=97;i<26;i++,j++)Console.WriteLine(new string((char)j,i)+new string(Enumerable.Range(j,26-i).Select(n=>(char)n).ToArray()));}

terkadang saya bertanya-tanya mengapa saya bahkan mencoba

sunting: perbaiki

Cobalah online


Saya sebenarnya tidak melakukannya karena saya juga menggunakan Konsol yang mengharuskan saya untuk mengetik System.Console yang tidak dilakukan siapa pun.
downrep_nation

pertimbangkan untuk mengatur j = 97 dan saya beilieve (char) j + i + "" dapat bekerja dan lebih pendek, tapi saya hanya tahu java jadi saya tidak yakin
Rohan Jhunjhunwala

j digunakan sebagai offset untuk karakter pertama. jika saya lakukan j = 97 saya perlu melakukan j ++ juga
downrep_nation

2
Yang menyedihkan adalah bahwa ~ 50% lebih lama dari solusi brainfuck
fyrepenguin

1
Ini tidak menghasilkan jawaban yang benar ketika saya menjalankannya, dapatkah Anda menambahkan tautan untuk mencobanya?
TheLethalCoder

5

MATL, 10 byte

lY2t!2$X>c

Demo online (Jika Anda memiliki masalah dengan penerjemah ini, ping saya di obrolan MATL . Juga, di sini adalah tautan TIO jika Anda memiliki masalah)

Penjelasan

lY2     % Push an array of characters to the stack: 'AB...Z'
t!      % Duplicate and transpose
2$X>    % Take the element-wise maximum between these two (with expansion)
c       % Explicitly convert back to characters
        % Implicitly display the result.

5

Python 2, 76 70 68 byte

a=range(65,91)
i=0
for c in a:a[:i]=[c]*i;i+=1;print'%c'*26%tuple(a)

Sangat mirip dengan jawaban saya untuk pertanyaan terkait .

Disimpan 2 byte berkat @xnor (lagi)!


1
Sama seperti sebelumnya, itu lebih pendek untuk mengubah execke dalam formenggunakan karakter saat sedang iterasi berakhir: for c in a:a[:i]=[c]*i;i+=1;print'%c'*26%tuple(a).
xnor

Wah, bagus sekali: D
ABcDexter

4

Oktaf, 26 byte

disp([max(L=65:90,L'),''])

Sampel dijalankan pada ideone .


Sangat bagus! Saya selalu lupa [...,'']triknya
Luis Mendo

1
@LuisMendo Ini benar-benar hanya menghemat 1 byte, tetapi mencolok! : D
gelas kimia

4

05AB1E , 9 byte

Kode:

AAv¬N×?=¦

Penjelasan:

AA         # Push the alphabet twice.
  v        # For each in the alphabet.
   ¬       # Get the first character and
    N×     # multiply by the iteration variable.
      ?    # Pop and print.
       =   # Print the initial alphabet without popping.
        ¦  # Remove the first character of the initial alphabet and repeat.

Menggunakan pengkodean CP-1252 . Cobalah online! .


4

Javascript ES6, 81 byte

x=>[...a='ABCDEFGHIJKLMNOPQRSTUVWXYZ'].map((x,y)=>x.repeat(y)+a.slice(y)).join`
`

Cukup jelas.


Apakah sesuatu seperti [... "SURAT"]. Peta lebih pendek?
MayorMonty

Itu adalah pendekatan awal saya, tetapi 2 byte lebih lama.
Mama Fun Roll

Itulah pendekatan yang saya pikirkan ketika saya melihat tantangan ini
MayorMonty

Secara umum, lebih baik menggunakan replacelebih dari mapiterasi string lebih dari char-by-char.
Mama Fun Roll

1
Dari a.slice(y)mana variabel aberasal?
gcampbell

4

R, 56 byte

Tidak memiliki perwakilan untuk berkomentar, tetapi jawaban @plannapus dapat di- drop sedikit ke:

for(i in 1:26)cat({L=LETTERS;L[1:i]=L[i];L},"\n",sep="")

menghasilkan output yang sama:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BBCDEFGHIJKLMNOPQRSTUVWXYZ
CCCDEFGHIJKLMNOPQRSTUVWXYZ
DDDDEFGHIJKLMNOPQRSTUVWXYZ
EEEEEFGHIJKLMNOPQRSTUVWXYZ
FFFFFFGHIJKLMNOPQRSTUVWXYZ
GGGGGGGHIJKLMNOPQRSTUVWXYZ
HHHHHHHHIJKLMNOPQRSTUVWXYZ
IIIIIIIIIJKLMNOPQRSTUVWXYZ
JJJJJJJJJJKLMNOPQRSTUVWXYZ
KKKKKKKKKKKLMNOPQRSTUVWXYZ
LLLLLLLLLLLLMNOPQRSTUVWXYZ
MMMMMMMMMMMMMNOPQRSTUVWXYZ
NNNNNNNNNNNNNNOPQRSTUVWXYZ
OOOOOOOOOOOOOOOPQRSTUVWXYZ
PPPPPPPPPPPPPPPPQRSTUVWXYZ
QQQQQQQQQQQQQQQQQRSTUVWXYZ
RRRRRRRRRRRRRRRRRRSTUVWXYZ
SSSSSSSSSSSSSSSSSSSTUVWXYZ
TTTTTTTTTTTTTTTTTTTTUVWXYZ
UUUUUUUUUUUUUUUUUUUUUVWXYZ
VVVVVVVVVVVVVVVVVVVVVVWXYZ
WWWWWWWWWWWWWWWWWWWWWWWXYZ
XXXXXXXXXXXXXXXXXXXXXXXXYZ
YYYYYYYYYYYYYYYYYYYYYYYYYZ
ZZZZZZZZZZZZZZZZZZZZZZZZZZ

Padahal, jika jawaban sebagai matriks diperbolehkan ( yaitu seperti di sini ), kita bisa melakukan 49 byte:

sapply(1:26,function(l){L=LETTERS;L[1:l]=L[l];L})

Saya meninggalkan komentar pada jawaban @plannapus 'mengarahkan dia ke jawaban Anda
Kritixi Lithos

Ini bagus tapi masih ada pendekatan yang lebih pendek
Giuseppe

4

R , 42 41 byte

write(outer(L<-LETTERS,L,pmax),'',26,,'')

Cobalah online!

The jawaban R terpendek berikutnya masih agak terlalu lama karena mencetak baris demi baris. Saya sedang memikirkan pertanyaan lain sebelumnya hari ini dan menyadari bahwa pendekatan yang jauh lebih pendek mungkin untuk yang ini: Saya membuat matriks sekaligus menggunakan outerdan pmax(maksimum paralel) dan kemudian mencetaknya (*) dalam satu langkah dengan write.

(*) secara teknis, transposnya, tapi untungnya simetris melintasi diagonal.


3

Haskell, 53 46 byte

unlines[(i<$['B'..i])++[i..'Z']|i<-['A'..'Z']]

Mengembalikan string tunggal dengan L-phabet.

pergi melalui karakter idari Ake Zdan membuat daftar (length ['B'..i])salinan idiikuti oleh [i..'Z']. Gabung elemen dengan baris baru di antaranya.


3

Python 3, 71 65 byte

Terima kasih kepada @LeakyNun untuk -6 byte

r=range(26)
for i in r:print(''.join(chr(max(i,x)+65)for x in r))

Program lengkap yang mencetak ke STDOUT.

Bagaimana itu bekerja

Kami menetapkan kode karakter untuk huruf-huruf alfabet, dari 0untuk Ake 25untuk Z. Program ini mengulangi interval [0, 25]dengan penghitung garis i, yang menentukan karakter saat ini untuk diulang dan panjang bagian yang diulang, dan indeks karakter x. Dengan memanggil max(i,x), semua karakter di bawah karakter yang diulang dijepit ke kode karakter yang sama. Menambah 65dan memanggil chrmengkonversi kode karakter yang dihasilkan ke ASCII setara mereka; ''.joinmenyatukan karakter, dan setiap baris dicetak ke STDOUT.

Cobalah di Ideone


3

𝔼𝕊𝕄𝕚𝕟, 12 karakter / 15 byte

ᶐⓢ⒨Ċ_+ᶐč_)ü⬬

Try it here (Chrome Canary only).

Pada dasarnya port jawaban ES6 saya.


Saya tidak mendapatkan ZZZZZZZZZZZZZZZ...intinya. Hanya mendapat satu Z.
cwallenpoole

Browser apa yang Anda gunakan?
Mama Fun Roll


+1 untuk menyingkirkan skor negatif itu. Tidak bekerja di Google Chrome, tetapi itu berfungsi di FireFox.
Kevin Cruijssen

Mencoba FF juga, tetapi tidak berhasil. Baiklah. Dihapus -1.
cwallenpoole

3

R, 54 byte

v=L=LETTERS;for(i in 2:26){L[1:i]=L[i];v=cbind(v,L)};v

Solusi ini menggunakan konstanta bawaan RLETTERS , yang ... yah ... mencantumkan huruf besar. Ada juga konstanta lettersuntuk huruf kecil.


Saya sedikit nitpicky tapi ini menghasilkan matriks, bukan teks yang diinginkan (yaitu output yang diinginkan tidak harus memiliki semua tanda kutip, spasi, rownames, colnames dll).
plannapus

3

C, 78 70 67 byte

f(i,j){for(;++i<27;puts(""))for(j=0;++j<27;putchar((i>j?i:j)+64));}

Kode memanfaatkan teknik golf berikut untuk C:

  • menghilangkan dasar termasuk (seperti stdio.h)
  • menghilangkan (mengembalikan) jenis fungsi dan variabel, menjadikannya default untuk int
  • gunakan operator ternary alih-alih blok if-else
  • gunakan kode ASCII dari surat alih-alih representasi karakternya (yaitu 65alih-alih 'A')
  • gunakan putcharuntuk menampilkan satu karakter
  • daftar argumen penyalahgunaan utama
  • gunakan puts("")untuk menampilkan baris baru

Juga, aturannya If it is a function, it must be runnable by only needing to add the function call to the bottom of the program.tidak melarang fungsi dipanggil dengan parameter (terima kasih kepada ABcDexter!).

Cobalah di Ideone

Versi ungolfed (tanpa peringatan dengan gcc) akan terlihat seperti ini:

#include <stdio.h>

#define MAX(x, y) (x>y ? x : y)

int main()
{
    for(int i=0; i<26; i++)
    {
        for(int j=0; j<26; j++)
            printf("%c", MAX(i, j) + 'A');
        printf("\n");
    }
    return 0;
}

Simpan 8 byte: f(i,j){for(i=0;++i<27;puts(""))for(j=0;++j<27;putchar((i>j?i:j)+64));}. Anda tidak memerlukan program lengkap, hanya fungsi yang telah melakukan operasi yang sama setiap kali dipanggil (yang memang demikian).
owacoder

@owacoder Terima kasih, perbaiki.
sigalor

Bisakah Anda menghapus itu i=0;dan membuat panggilan fungsi sebagai f(0,0)?
ABcDexter

1
@ ABcDexter Yap, itu seharusnya berfungsi (aturannya If it is a function, it must be runnable by only needing to add the function call to the bottom of the program.sepertinya tidak melarang hal ini, karena tidak mengatakan parameter cuaca apa pun ke pemanggilan fungsi diperbolehkan). Saya membiarkan mainpanggilan saja f(0), karena inisialisasi untuk yang kedua untuk loop (yang dengan jsebagai counter) masih diperlukan.
sigalor

@ Sigalor Ya tepatnya. Saya mencoba sendiri di C, tetapi melihat bahwa kode Anda lebih pendek :)
ABcDexter

3

Cheddar, 90 byte

(|>26).map(i->String.letters.chars.map((j,k,l)->k<i?l[i]:j).fuse).vfuse.slice(1)

Itu String.lettersterlalu lama: /

Harus menambahkan .slice(1)karena baris baru terkemuka tidak diizinkan

Penjelasan

(|>26)       // Range from [0, 26)
.map(i->     // Loop through that range
 String.letters.chars // Alphabet array
  .map(               // Loop through alphabet
  (j,k,l) ->          // j = letter, j = index, l = alphabet
    k<i?l[i]:j        // Basically `l[max(k,i)]` 
  ).fuse     // Collapse the array
).vfuse      // Join on newlines

Cheddar, 65 byte (tidak bersaing)

(|>26).map(i->String.letters.map((j,k,l)->k<i?l[i]:j).fuse).vfuse

Bekerja dengan cabang malam . Tidak bersaing ... bagian yang menyedihkan adalah saya sudah melakukan perubahan ... tidak pernah berkomitmen; _;


Saya pikir sesuatu seperti 65@"90berfungsi untuk String.letters
Conor O'Brien
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.