5 Surat Favorit


90

Tantangannya sebenarnya sangat sederhana. Pilih 5 huruf berbeda (Anda hanya dapat memilih 5 yang memungkinkan Anda mendapatkan kode terpendek jika diinginkan) dan mengeluarkannya ke konsol. Namun, twistnya adalah mereka harus dari daftar berikut:

 AAA      BBBB       CCCC     DDDD      EEEEE     FFFFF      GGG      H   H
A   A     B   B     C         D   D     E         F         G         H   H
AAAAA     BBBB      C         D   D     EEEE      FFFF      G  GG     HHHHH
A   A     B   B     C         D   D     E         F         G   G     H   H
A   A     BBBB       CCCC     DDDD      EEEEE     F          GGG      H   H


IIIII         J     K   K     L         M   M     N   N      OOO 
  I           J     K  K      L         MM MM     NN  N     O   O
  I           J     KKK       L         M M M     N N N     O   O
  I       J   J     K  K      L         M   M     N  NN     O   O
IIIII      JJJ      K   K     LLLLL     M   M     N   N      OOO 


PPPP       QQQ      RRRR       SSSS     TTTTT     U   U     V   V     W   W
P   P     Q   Q     R   R     S           T       U   U     V   V     W   W
PPPP      Q   Q     RRRR       SSS        T       U   U     V   V     W   W
P         Q  QQ     R  R          S       T       U   U      V V      W W W
P          QQQQ     R   R     SSSS        T        UUU        V        W W 


X   X     Y   Y     ZZZZZ
 X X       Y Y         Z 
  X         Y         Z  
 X X        Y        Z   
X   X       Y       ZZZZZ

Aturan tambahan:

  • 5 dari surat yang sama tidak diperbolehkan, tidak ada pilihan berulang.
  • Setiap huruf harus menggunakan modal sendiri sebagai karakter ascii untuk menggambarnya.
  • Setiap keluaran huruf harus berada pada "baris yang sama" dan memiliki 5 spasi di antara setiap huruf.
  • Anda dapat memilih setiap 5 huruf yang Anda inginkan, ini akan memungkinkan Anda untuk menggunakan kembali beberapa kode dan menurunkan jumlah byte Anda. Mencari tahu huruf mana yang memungkinkan Anda melakukan ini dengan efisien adalah bagian dari tantangan.
  • Ruang tambahan dapat diterima.
  • Sebuah single trailing newline dapat diterima, tidak lebih dari satu trailing newline sekalipun.
  • Ini adalah kode-golf, kemenangan byte-count terendah.

Contoh:

ABCDE

 AAA      BBBB       CCCC     DDDD      EEEEE
A   A     B   B     C         D   D     E    
AAAAA     BBBB      C         D   D     EEEE 
A   A     B   B     C         D   D     E    
A   A     BBBB       CCCC     DDDD      EEEEE

EFLIP

EEEEE     FFFFF     L         IIIII     PPPP 
E         F         L           I       P   P
EEEE      FFFF      L           I       PPPP 
E         F         L           I       P    
EEEEE     F         LLLLL     IIIII     P    

GILA

 CCCC     RRRR       AAA      ZZZZZ     Y   Y
C         R   R     A   A        Z       Y Y 
C         RRRR      AAAAA       Z         Y  
C         R  R      A   A      Z          Y  
 CCCC     R   R     A   A     ZZZZZ       Y  

Jangan takut untuk mengirimkan lebih dari satu jawaban dengan huruf yang berbeda atau strategi yang berbeda setiap kali, ini dapat dilakukan dengan berbagai cara.


21
Saya suka Anda bisa memilih surat mana yang akan dikirim; yang menambahkan lapisan lain ke golf. Masalah kecil dengan seni ASCII: ada satu ton ruang tambahan, dan dua Js.
ETHproduksi

2
Bisakah Anda menambahkan bonus untuk mengambil 5 huruf sebagai input?
Mukul Kumar

5
Bonus disukai dan ada terlalu banyak jawaban untuk membuat perubahan drastis seperti itu. Tapi saya akan memberi Anda upvote;).
Magic Octopus Mm

1
@Itus saya tidak tahu mengapa Anda membutuhkannya; Trailing lebih masuk akal. Jika Anda dapat menjelaskan secara logis bagaimana batasan bahasa yang Anda gunakan dan bukan logika yang Anda tulis yang menyebabkan suatu pengarahan \n, saya akan mengizinkannya.
Guci Gurita Ajaib

1
@Itus maka tidak. Baris baru dan spasi tambahan disebabkan oleh keterbatasan program bahasa tertentu.
Magic Gurita Guci

Jawaban:


12

Jelly , 41 byte

LICTE

“LICTE”Kż
141D+“ȷɓSɠ’“ðƁ ƥ“JrŀṘ’jḃ11Ç€ŒṙY

TryItOnline!

Ide

Gunakan decode panjang run dengan huruf yang memiliki nilai tengah sedekat mungkin dengan hanya satu panjang run dari setiap "nilai piksel" per baris per huruf.

Letakkan start datar seperti "L" untuk menghindari nilai dekode panjang run yang berbeda untuk baris.

Tempatkan satu huruf yang berbeda (tidak dapat menemukan 5) dari tiga baris tengah di akhir sehingga perbedaan terkecil dapat ditambahkan secara hitung.

Output yang diinginkan; panjang lari; dan ini dikonversi dari basis 11:

                                                  L,  , I,  , C,  , T,  , E   value
                                                  -------------------------
L         IIIII      CCCC     TTTTT     EEEEE     1, 9, 5, 6, 4, 5, 5, 5, 5   399633415
L           I       C           T       E         1,11, 1, 7, 1,11, 1, 7, 1   431646160+1
L           I       C           T       EEEE      1,11, 1, 7, 1,11, 1, 7, 4   431646160+4
L           I       C           T       E         1,11, 1, 7, 1,11, 1, 7, 1   431646160+1
LLLLL     IIIII      CCCC       T       EEEEE     5, 5, 5, 6, 4, 7, 1, 7, 5   1179122455

Tiga nilai 399633415, 431646160dan 1179122455dalam basis 250sebagai halaman kode indeks Jelly kemudian ðƁ ƥ, ȷɓSɠdan JrŀṘyang dapat digunakan untuk merangkum informasi run-length.

Kode

“LICTE”Kż - Link 1, make a run length encoding for a row of the output: row's run lengths
“LICTE”    - list of characters "LICTE"
       K   - join with spaces   "L I C T E"
        ż  - zip with input     e.g. [['L',1],[' ',9],['I',5],[' ',6],['C',4],[' ',5],['T',5],[' ',5],['E',5]]

141D+“ȷɓSɠ’“ðƁ ƥ“JrŀṘ’jḃ11Ç€ŒṙY - Main link
141D                            - 141 as a decimal list: [1, 4, 1]
     “ȷɓSɠ’                     - 431646160
    +                           - add: [431646161, 431646164, 431646161]
           “ðƁ ƥ“JrŀṘ’          - list [399633415,1179122455]
                      j         - join: [399633415, 431646161, 431646164, 431646161, 1179122455]
                       ḃ11      - convert to bijective base 11: [[1, 9, 5, 6, 4, 5, 5, 5, 5], [1, 11, 1, 7, 1, 11, 1, 7, 1], [1, 11, 1, 7, 1, 11, 1, 7, 4], [1, 11, 1, 7, 1, 11, 1, 7, 1], [5, 5, 5, 6, 4, 7, 1, 7, 5]]
                          Ç€    - call last link (1) as a monad for €ach
                            Œṙ  - run-length decode e.g. [['L',1],[' ',9],['I',5],...]
                                                            -> "L         IIIII..."
                              Y - join with line feeds

1
Anda melakukan ide yang saya miliki pada awalnya bahwa saya tidak cukup pintar untuk melakukannya di 05AB1E !!! Pria yang luar biasa.
Magic Octopus Mm

32

Arang , 51 49 byte (ECXKI)

G←⁵↓³→⁴EM⁷→G↑²↗²→⁴CM⁶→GH↘↗³XM⁶→GH↓→↗³KM⁸→PTIII‖O↓

Keluaran

EEEEE      CCCC     X   X     K   K     IIIII
E         C          X X      K  K        I  
EEEE      C           X       KKK         I  
E         C          X X      K  K        I  
EEEEE      CCCC     X   X     K   K     IIIII

Cobalah online!

Dengan menggunakan karakter yang simetris secara vertikal, gambarlah bagian atas dan kemudian pantulkan. Sebagian besar menggunakan Polygon ( ) dan PolygonHollow ( GH) untuk menggambar serangkaian segmen garis yang terhubung dengan karakter tertentu. Ibisa lebih mudah dilakukan dengan MultiPrint ( ), menggunakan Tsebagai arah.

Catatan: PolygonHollow hanya menggambar segmen yang ditentukan, tanpa menyelesaikan poligon atau mengisinya. Poligon akan melengkapi dan mengisi (bukan apa yang kita inginkan) jika poligon dapat dilengkapi dengan garis sederhana di salah satu dari delapan arah mata angin atau antar arah. Kalau tidak, itu berperilaku seperti PolygonHollow, untuk penghematan satu byte.

Urutan karakter dipilih untuk hanya membutuhkan gerakan horisontal dari titik akhir ke awal berikutnya. Begini cara kursor berlangsung:

Gerakan kursor, menggambar bagian atas ECXKI


2
Bagus. Saya sedang mencoba solusi arang tetapi kurangnya dokumentasi jujur ​​membunuh saya
Bassdrop Cumberwubwubwub

6
@Bassdrop Ya, kami ... mm ... mengerjakannya. [pergi untuk menambah GHdokumen]
DLosc

19

PowerShell v2 +, 138 128 114 112 106 105 byte (LICTD)

"L1    IIIII1 CCCC1TTTTT1DDDD
$("L11 I1  C11 T1  D   D
"*3)LLLLL1IIIII1 CCCC1  T1  DDDD"-replace1,'     '

Idenya adalah untuk memaksimalkan jarak antar huruf sehingga kita bisa mendapatkan kompresi berulang.

Pinjam trik deduplikasi baris tengah dari jawaban Florent . Disimpan 6 byte berkat Ben Owen dengan menggunakan perkalian string untuk tiga baris tengah, dan satu byte tambahan berkat Matt .

Output seperti berikut pada 227 byte, untuk pengurangan 53,7% -

PS C:\Tools\Scripts\golfing> .\5-favorite-letters.ps1
L         IIIII      CCCC     TTTTT     DDDD
L           I       C           T       D   D
L           I       C           T       D   D
L           I       C           T       D   D
LLLLL     IIIII      CCCC       T       DDDD

Saya suka ketika jawaban pertama adalah sesuatu yang tidak Anda harapkan sama sekali. Metode rapi
Magic Octopus Mm

2
Bagaimana kalau $("L11 I1 C11 T1 D D`n"*3)alih - alih 3 garis tengah
Ben Owen

@ Benwen Ide bagus - terima kasih!
AdmBorkBork

13

JavaScript, 110 109 byte (CLOUD)

` CCCC5L9 OOO6U3U5DDDD
${x=`C9L9O3O5U3U5D3D
`,x+x+x} CCCC5LLLLL6OOO7UUU6DDDD`.replace(/\d/g,c=>" ".repeat(c))

Output adalah 227 byte:

 CCCC     L          OOO      U   U     DDDD
C         L         O   O     U   U     D   D
C         L         O   O     U   U     D   D
C         L         O   O     U   U     D   D
 CCCC     LLLLL      OOO       UUU      DDDD

1
Baik penggunaan deduplikasi di tiga baris tengah.
AdmBorkBork

12

ES6 (Javascript), 194, 181 byte (IGOLF / ANY)

Yang ini panjang, dan belum benar-benar dioptimalkan (setidaknya belum), tetapi dapat dimodifikasi untuk mencetak pesan tertentu, dengan hanya mengubah data bitmap.

SUNTING: Pengganti bagian dalam dikurangi dengan peta , gunakan pergeseran bit untuk bantalan

Golf

[0x1f73a1f,0x484610,0x49c61e,0x48c610,0x1f73bf0].map(r=>[0,1,2,3,4].map(p=>('0000'+(r>>(20-p*5)<<5).toString(2)).substr(-10).replace(/(1|0)/g,b=>' IGOLF'[(p+1)*b])).join``).join`\n`

Demo

[0x1f73a1f,0x484610,0x49c61e,0x48c610,0x1f73bf0].map(r=>[0,1,2,3,4].map(p=>('0000'+(r>>(20-p*5)<<5).toString(2)).substr(-10).replace(/(1|0)/g,b=>' IGOLF'[(p+1)*b])).join``).join`\n`

IIIII      GGG       OOO      L         FFFFF     
  I       G         O   O     L         F         
  I       G  GG     O   O     L         FFFF      
  I       G   G     O   O     L         F         
IIIII      GGG       OOO      LLLLL     F         

Teori

Ambil surat:

IIIII      
  I        
  I        
  I        
IIIII 

mengubahnya menjadi matriks biner (bitmap)

11111
00100
00100
00100
11111

lakukan hal yang sama untuk 4 huruf lainnya, pindai baris, dengan mengambil "top" 5 bit masing-masing

11111 01110 01110 10000 11111

konversikan ke string heksadesimal (harus menggunakan base36 atau bahkan ASCII yang dapat dicetak di sini)

0x1f73a1f

menerapkan algoritma yang sama ke 4 baris lainnya, untuk mendapatkan bitmap.

Jadikan dalam urutan terbalik.


1
Anda dapat menghapus tanda kurung di regex untuk menghemat 2 byte :-)
ETHproduk

1
[32979487,4736528,4834846,4769296,32979952] lebih pendek dari representasi heksadesimalnya
Florent

@ ETHproductions Benar, akan menggunakan ini, ketika saya akan kembali untuk mengoptimalkannya. Terima kasih!
zeppelin

1
Anda dapat mengganti /(1|0)/gdengan /\d/guntuk menyimpan beberapa byte. Juga \nbisa diganti dengan baris baru yang sebenarnya.
Florent

> lebih pendek dari representasi heksadesimalnya Yep, itu benar (karena 0x), setidaknya untuk huruf-huruf khusus ini, saya mungkin akan mengompres ini menjadi string hex berkelanjutan (atau bahkan Base32 / Base36 / ASCII), pada iterasi berikutnya . > Anda bisa mengganti / (1 | 0) / g dengan / \ d / g untuk menyimpan beberapa byte. Juga \ n bisa diganti dengan baris baru yang sebenarnya. Yap, terima kasih atas tipsnya, saya akan menggunakannya setelah saya kembali ke yang ini.
zeppelin

12

PHP, 107 104 102 94 86 byte

Ok saya yakin saya memiliki sumber sekecil mungkin dengan metode ini sekarang. Saya menulis skrip untuk menghasilkan dan kemudian gzip setiap kemungkinan kombinasi lima huruf. Ada dua solusi yang cocok untuk kompresi terpendek - LODIC dan LDOIC. Saya pergi dengan yang pertama karena lebih menyenangkan untuk mengatakan.

Sumber:

<?=gzinflate(base64_decode('81GAA39/fwjDBQggLE8QgDCdgYDLB6EYioGqoRisHkrTSCUIEOtWAA'));

Keluaran:

% php foo.php
L          OOO      DDDD      IIIII      CCCC
L         O   O     D   D       I       C
L         O   O     D   D       I       C
L         O   O     D   D       I       C
LLLLL      OOO      DDDD      IIIII      CCCC

3
Anda dapat menyimpan 2 byte dengan menjatuhkan 's: string akan diperlakukan sebagai konstanta dengan nilai itu sendiri.
user59178

Sial, aku selalu lupa melakukan itu. :)
Alex Howansky

Jika L adalah huruf terakhir Anda, Anda juga akan menghemat lebih banyak byte.
Magic Gurita Guci

Eksploitasi celah yang bagus.
Ismael Miguel

2
Kreativitas bersifat subyektif dan tak terukur. Tujuan dari tantangan ini adalah untuk meminimalkan ukuran kode dan ini adalah entri terpendek untuk bahasa non-golf.
Alex Howansky

10

05AB1E , 44 byte

Ini menyenangkan.
Saya merasa perlu kembali dan mencoba bermain golf lagi ketika ada waktu.

Menggunakan pengodean CP-1252 .
Terinspirasi oleh jawaban carusocomputing .

ECOIH

‘ÓÑOIHH‘SðýJ3×S•Td<UÕ‘áÓ?¢tWvkÔÚ•S)øü×J3äû»

Cobalah online!

Penjelasan

‘ÓÑOIHH‘mendorong tali "ECOOIHH".

SðýJ3×Sbergabung string dengan spasi, ulangi tiga kali dan mengubahnya menjadi daftar.
Daftar yang dihasilkan adalah ['E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H'].

•Td<UÕ‘áÓ?¢tWvkÔÚ•mendorong nomor itu 564631055513119191317171314619131717500.

S)ø zip daftar dan nomor bersamaan.

ü×Jmelakukan pengulangan string berpasangan dan bergabung bersama-sama.
Hasilnya adalah string EEEEE CCCC OOO IIIII H HE C O O I H HEEEE C O O I HHHHH.

3äû»membaginya menjadi 3 bagian, menambahkan potongan pertama dan kedua dalam urutan terbalik dan bergabung dengan baris baru.


13
" •Td<UÕ‘áÓ?¢tWvkÔÚ•push the number 564631055513119191317171314619131717500" karena mengapa tidak ...
geisterfurz007

3
@ geisterfurz007: Untuk lebih tepatnya, ini adalah representasi base-214 dari nomor base-10 :)
Emigna

Jadi berpotensi jika Anda bisa naik ke pangkalan yang lebih tinggi, string Anda akan menjadi lebih pendek?
geisterfurz007

@ geisterfurz007: Jika kita bisa ya. Sayangnya 214 adalah maks di 05AB1E.
Emigna

3
Anda bisa mengalahkan Jelly, saya percaya pada Anda; 3 byte tersisa untuk pergi haha!
Magic Octopus Mm

9

JavaScript (ES6), 96 byte (DIOCL)

`${x="DDDD6IIIII6OOO7CCCC5L"}
${y=`D3D7I7O3O5C9L
`,y+y+y+x}LLLL`.replace(/\d/g,d=>" ".repeat(d))

Idenya di sini adalah tidak hanya membuat tiga garis tengah identik, tetapi juga membuat garis pertama hampir identik dengan yang terakhir. Karena hanya ada 4 huruf yang sangat cocok dengan deskripsi ini CDIO, Ladalah pilihan terbaik berikutnya, karena hanya membutuhkan 4 karakter tambahan di akhir string.

Seperti halnya jawaban Florent , ini adalah cuplikan yang mengembalikan hasilnya. Tambahkan 3 byte jika perlu fungsi.

Cuplikan tes


Anda dapat menyimpan satu byte dengan meletakkan yang Dpertama.
Neil

@Neil Terima kasih. Saya harus memindahkan masa Clalu Idan Ojuga
ETHproduk

Ah, benar, Anda tidak dapat memiliki Isegera setelah itu C, meskipun melakukan hal yang menarik meningkatkan solusi Batch saya, untuk alasan yang sama.
Neil

9

Bash + coreutils dengan figlet, solusi 55440, masing-masing 112 106 byte

 set H E L P D;for l;do figlet -f banner $l|sed "s/.//3;s/.//5;s/#/$l/g;2d;5d">$l;done;paste $@|expand -t10

Keluaran:

HH EEEEE L PPPP DDDD  
BANTUAN 
HHHHH EEEE L PPPP DD 
BANTUAN 
HH EEEEE LLLLL P DDDD  
                                              

Hei, kami sudah memiliki program untuk seni ASCII! The spanduk font yang hampir melakukan pekerjaan, kecuali itu output huruf 7x7. Hmm, mari kita hapus kolom ke-3 dan ke-5, dan baris ke-2 dan ke-5, dan lihat apa yang memberi ...

Ternyata banyak surat akan ditampilkan dengan cara yang diperlukan, yaitu, BDEFHJLPTU Z.

Cukuplah untuk mengganti argumen dari perintah set pertama dengan kombinasi huruf-huruf tersebut untuk tetap mendapatkan hasil yang benar! Karenanya, ini memberi kita 11 * 10 * 9 * 8 * 7 = 55440 solusi, masing-masing panjangnya 106 byte.


1
Pikiran pertama saya ketika membaca tantangannya adalah "seseorang harus menggunakan figlet untuk menyelesaikan ini"
FliiFe

6

05AB1E , 102 90 89 69 byte (EOIXC)

•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚúNÏŒº9¨gÚSÞ•34B2ð:2ôvy`×}J3äû»

Cobalah online!

Output (230 byte):

EEEEE      OOOO     IIIII     X   X      CCCC
E         O    O      I        X X      C    
EEEE      O    O      I         X       C    
E         O    O      I        X X      C    
EEEEE      OOOO     IIIII     X   X      CCCC

69/302 = 70% Kompresi

Penjelasan:

Teorinya adalah untuk memilih huruf simetris secara vertikal, kemudian mengkodekan 3 baris pertama dan palindromize mereka. Pada dasarnya, saya dikodekan sebagai {#} dari {Letter} dalam 2 byte pasangan. Saya yakin ada cara yang lebih baik untuk melakukan ini.

•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚîòvÅr葾)jM•34B
                    <decodes to>
"E5 6O4 5I5 5X1 3X1 6C4E1 9O1 4O1 6I1 8X1 1X1 6C1 4E4 6O1 4O1 6I1 9X1 7C1 4"

2ô            # Split into encoded pairs.
  vy   }      # Loop through each letter and number pair.
    `×        # Add the letter X number of times.
       J      # Join together.
        3ä    # Split into 3 parts length.
          û   # Palindromize.
           »  # Print separated by newlines.

-20 byte terima kasih kepada Emigna, saya akan segera mengobrol untuk menanyakan beberapa pertanyaan;).


1
Anda dapat menyimpan 19 byte dengan mengganti string dengan •Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚîòvÅr葾)jM•34B2ð:. Ikuti obrolan 05AB1E jika Anda memiliki pertanyaan tentang penyandian.
Emigna

1
Juga 45ôbisa .
Emigna

@ Emigna Atidak simetris secara vertikal, dan begitu juga tidak F. Akan menebak bahwa sekali Anda mulai menggunakan Gatau lebih tinggi itu akan merusak apa yang Anda bicarakan, kan? Juga, dengan metodologi kompresi saya, saya ingin menghindari huruf yang memiliki lebih dari 1 kemunculan per baris. Jika Anda ingin golf solusi itu dan mengalahkan saya, saya akan menyambut contohnya :).
Magic Gurita Guci

Ada 0di O(baris tengah, sisi kanan)
ETHproduk

1
•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚúNÏŒº9¨gÚSÞ•perbaikan Opada jumlah byte yang sama.
Emigna

5

JavaScript ES6, 168 byte, CHAMP

Kita bisa berhenti mencari teman, kita punya CHAMPdi sini

f=_=>
` C3cHaHdA2dMaMcP3
CgHaHcAaAcMM MMcPaP
CgH4cA4cM M McP3
CgHaHcAaAcMaMcP
 C3cHaHcAaAcMaMcP`.replace(/[a-z\d]/g,(a,i,c)=>+a?c[i-1].repeat(a):' '.repeat(parseInt(a,36)-7))

a.innerHTML = f()
<pre id=a>


5

Brainf *** 512 411 Bytes

Lebih baik diulang:

Yang ini melakukan pekerjaan yang lebih baik dalam mengoptimalkan rekaman, mengorbankan karakter pengaturan untuk mencetak karakter. Rekaman yang satu ini terlihat seperti 'C' 'E' ' ' 'F' 'I' 'L' '\n', meningkatkan efisiensi. Saya memilih ini karena mereka tidak memiliki ruang internal, sehingga mereka tidak perlu bolak-balik antara karakter dan ruang lebih dari yang diperlukan

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

Jika Anda ingin membaca apa yang dilakukannya:

Set the tape with 67,69,32,70,73,76,10
++++++++[>+++++++++>+++++++++>++++>+++++++++>+++++++++>+++++++++>+<<<<<<<-]>----->--->>-->+>++++>++<<<< 
.<<....>>.....<.....>.....>.....<.....>>.....<<.....>>>.>.<<<<<< First Line
.>>.........<.>.........>.<...........>>.<<.......>>>.>.<<<<<< Second Line
.>>.........<....>......>....<........>>.<<.......>>>.>.<<<<<< Third Line
.>>.........<.>.........>.<...........>>.<<.......>>>.>.<<<< Fourth Line
.<<....>>.....<.....>.....>.<.........>>.....<<.....>>>..... Fifth Line

Keluaran:

 CCCC     EEEEE     FFFFF     IIIII     L
C         E         F           I       L
C         EEEE      FFFF        I       L
C         E         F           I       L
 CCCC     EEEEE     F         IIIII     LLLLL

Pengajuan sebelumnya:

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

Saya memilih untuk menggunakan ABCDE karena membuat pengaturan rekaman untuk output lebih mudah, tetapi waktu dan karakter yang saya buang dari huruf ke '' untuk semua ruang negatif di dalam A, B, dan D dan penempatan garis akhir di akhir rekaman itu agak membunuh saya, saya pikir.

Saya berakhir dengan kaset yang memiliki nilai 0 0 'A' 'B' 'C' 'D' 'E' ' ' \ndan kemudian output dari sana

++++++++[>++++<-]>[>++>++>++>++>++>+<<<<<<-]>+>++>+++>++++>+++++>>++++++++++     This all sets up the tape as 0 0 A B C D E ' ' '\n'
<.<<<<<...>>>>>......<<<<....>>>>.......<<<....>>>.....<<....>>......<.....>>.<<<<<< First Line
.>>>>>...<<<<<.>>>>>.....<<<<.>>>>...<<<<.>>>>.....<<<.>>>.........<<.>>...<<.>>.....<.>>.<<<<<< Second Line
.....>>>>>.....<<<<....>>>>......<<<.>>>.........<<.>>...<<.>>.....<....>>.<<<<<< Third Line
.>>>>>...<<<<<.>>>>>.....<<<<.>>>>...<<<<.>>>>.....<<<.>>>.........<<.>>...<<.>>.....<.>>.<<<<<< Fourth Line
.>>>>>...<<<<<.>>>>>.....<<<<....>>>>.......<<<....>>>.....<<....>>......<..... Last Line

Keluaran:

 AAA      BBBB       CCCC     DDDD      EEEEE
A   A     B   B     C         D   D     E
AAAAA     BBBB      C         D   D     EEEE
A   A     B   B     C         D   D     E
A   A     BBBB       CCCC     DDDD      EEEEE

Anda dapat menggunakan [<]>3 kesempatan untuk menghemat 6 byte.
Jo King

5

Vim, 116 byte 99 byte

ELITC

Golf di bawah 100 dengan bantuan @DrMcMoylex.

9i59Yo191919171
E L I T CPqqjx:%s/\d/\=repeat('"',submatch(0))
q8@q3bi  Y7w.PP4rE{wl4r 22wl.2x

Ini berisi karakter yang tidak patut dicetak, jadi saya telah menambahkannya di bawah (gaya Vim), sehingga Anda dapat melihatnya.

9i5^[9^AYo191919171
E L I T C^[Pqqjx:%s/\d/\=repeat('^R"',submatch(0))
q8@q3bi  ^[Y7w.PP4rE{wl4r 22wl.2x

TryItOnline!

Ini pada dasarnya menggunakan decode run-length yang sama dengan jawaban jelly. Saya menggunakan huruf-huruf di mana saya bisa (mudah-mudahan) mengulangi bagian atas di bagian bawah, dan middle semuanya akan sama. Setelah bagian atas, bagian bawah, dan middle dibuat, saya mengedit karakter untuk membuatnya benar:

  1. Tambahkan dua spasi ke I (selengkapnya di bawah ini)
  2. Tambahkan dua spasi ke T
  3. Tambahkan bilah E
  4. Lepaskan bagian atas L
  5. Hapus bagian bawah T (dan hapus 2 spasi)

Saya harus menambahkan dua spasi ke I, karena saya tidak mengizinkan dua angka angka (jadi saya tidak perlu pemisah. Ini mengarah ke 9 ruang lari di mana saya perlu 11.


Selamat datang di PPCG, jawaban yang bagus :).
Magic Octopus Urn

Saya hampir memohon jawaban Vim.
Zoltán Schmidt

2
Saya selalu memilih vim. :) Beberapa perbaikan yang saya lihat. 1) Anda tidak perlu garis miring pada perintah pengganti Anda. 2) Beberapa sinonim yang berguna: Ybukan Vy, FIbukan ?I<cr>, {bukan gg, wbukan fl. 3) Jika Anda menggunakan ralih-alih R, Anda dapat menghapus <esc>.
DJMcMayhem

5

MATL , 49 byte

5:lyI&(g84*t0*ytP+g73*yy!qy5XyPl5LY(90*yy!P12-&hc

Cobalah online!

Ini menghasilkan surat-surat TIHZN:

TTTTT     IIIII     H   H     ZZZZZ     N   N
  T         I       H   H        Z      NN  N
  T         I       HHHHH       Z       N N N
  T         I       H   H      Z        N  NN
  T       IIIII     H   H     ZZZZZ     N   N

Penjelasan

Trelatif mudah dibuat dari awal. Idapat diperoleh pada dasarnya sebagai Tplus refleksi vertikal. Hadalah Idialihkan. Nadalah Zdialihkan dan vertikal tercermin.

5:        % Push [1 2 3 4 5]
lyI&(     % Write [1 ;2; 3; 4 ;5] in the third column, filling with zeros.
          % This gives the shape of the 'T'
g84*      % Change nonzeros into 84 (ASCII for 'T'). Zeros will be displayed
          % as spaces
t0*       % Duplicate and multiply by zeros. This gives the separator
y         % Duplicate from below: pushes the 'T' again
tP+       % Duplicate, flip vertically, add. Gives the shape of the 'I'
g73*      % Change nonzeros into 73 (ASCII for 'I')
yy        % Duplicate separator and 'I' array
!         % Transpose. Gives the shape of the 'H'
q         % Subtract 1. Transformss 73 into 72 (ASCII for 'H'), and 0 into -1,
          % which will later be changed back into 0 when converting to char
y         % Duplicate separator
5XyP      % Size-5 identity matrix flipped vertically: gives slash of the 'Z'
l5LY(     % Fill first and last rows with ones. Gives the shape of the 'Z'
90*       % Multiply by 90 (ASCII for 'Z')
yy        % Duplicate separator and 'Z' array
!P        % Transpose and flip vertically. Gives shape of the 'N'
12-       % Subtract 12 to yield ASCII code for 'N'. 0 is converted to -12
&h        % Concatenate the nine arrays horizontally
c         % Convert to char. Implicitly display

4

V , 62 , 53 byte

iC±  I· D³ Dµ O³ O¸ Z3ñYp$XñS ´Cµ µIµ ´D· ³O¶ µZYHP

Cobalah online!

Output ini C I D O Z:

 CCCC     IIIII     DDDD       OOO      ZZZZZ
C           I       D   D     O   O        Z
C           I       D   D     O   O       Z
C           I       D   D     O   O      Z
 CCCC     IIIII     DDDD       OOO      ZZZZZ

3

Perl, 109 byte (ABCDE)

Catatan : ini mengandung karakter yang tidak patut dicetak, lolos untuk kemudahan pengujian di sini, xxddibuang di bawah.

$_="\x0e\x1e\x0f\x1e\x1f
\x11\x11\x10\x11\x10
\x1f\x1e\x10\x11\x1e
\x11\x11\x10\x11\x10
\x11\x1e\x0f\x1e\x1f";s!.!(eval'(sprintf"%5b",ord$&)=~y/01/ '.(A..E)[$i++%5].'/r').$"x5!ge;print

Menyimpan representasi biner dari posisi huruf sebagai angka, lalu membongkar kembali ke dalam biner, mengganti 0s dengan spasi dan 1s dengan huruf yang sesuai, menggunakan pencarian. Menyimpan representasi surat itu cukup mudah, tetapi menggantinya ternyata lebih rumit dari yang saya harapkan. Saya yakin ada cara yang lebih baik untuk melakukan ini sehingga saya mungkin terus bermain dengan ini.

Untuk membuat ulang file, jalankan xxd -r > favourite-letter.pl, rekatkan di bawah ini dan tekan Ctrl+ D:

0000000: 245f 3d22 0e1e 0f1e 1f0a 1111 1011 100a  $_="............
0000010: 1f1e 1011 1e0a 1111 1011 100a 111e 0f1e  ................
0000020: 1f22 3b73 212e 2128 6576 616c 2728 7370  .";s!.!(eval'(sp
0000030: 7269 6e74 6622 2535 6222 2c6f 7264 2426  rintf"%5b",ord$&
0000040: 293d 7e79 2f30 312f 2027 2e28 412e 2e45  )=~y/01/ '.(A..E
0000050: 295b 2469 2b2b 2535 5d2e 272f 7227 292e  )[$i++%5].'/r').
0000060: 2422 7835 2167 653b 7072 696e 74         $"x5!ge;print

Pemakaian

perl favourite-letter.pl
 AAA      BBBB       CCCC     DDDD      EEEEE     
A   A     B   B     C         D   D     E         
AAAAA     BBBB      C         D   D     EEEE      
A   A     B   B     C         D   D     E         
A   A     BBBB       CCCC     DDDD      EEEEE     

3

Python 2, 124 byte

d,i,o,c,l,s,n='DIOCL \n'
T=d*4+s*6+i*5+s*6+o*3+s*7+c*4+s*5+l
M=d+s*3+d+s*7+i+s*7+o+s*3+o+s*5+c+s*9+l+n
print T+n,M,M,M,T+l*3

Mirip dengan jawaban saya yang lain , tetapi dengan pilihan surat yang lebih baik. Output ini:

DDDD      IIIII      OOO       CCCC     L
D   D       I       O   O     C         L
D   D       I       O   O     C         L
D   D       I       O   O     C         L
DDDD      IIIII      OOO       CCCC     LLLL

3

Befunge, 120 byte (CKYTF)

Sumber

#&49+14489+56*1449135*44711425*:12p9138*7+:89+:56*55*v_@
-1g05$$_\#!:2#-%#16#\0#/g#20#,g#+*8#4<80\9*2p06%5p05:<^:,g2!%5:

Keluaran

  CCCC     K   K     Y   Y     TTTTT     FFFFF
 C         K  K       Y Y        T       F
 C         KKK         Y         T       FFFF
 C         K  K        Y         T       F
  CCCC     K   K       Y         T       F

Cobalah online!

Dalam hal ini penting, saya harus menunjukkan bahwa output saya memiliki ruang terkemuka di setiap baris. Aturan tidak secara eksplisit melarang itu, jadi saya berharap tidak apa-apa. Jika tidak, harap anggap ini entri yang tidak bersaing.

Penjelasan

Huruf-huruf kata dikodekan sebagai urutan sederhana dari 25 bilangan bulat, setiap bilangan bulat menjadi representasi biner dari 5 piksel. Karena Befunge mengharuskan Anda melakukan kalkulasi untuk membuat instantiate integer mana pun yang lebih besar dari 9, huruf-huruf itu dipilih untuk meminimalkan jumlah kalkulasi yang diperlukan, dan dipesan sehingga nilai-nilai pengulangan yang potensial dapat digandakan daripada dihitung ulang.

Kita juga perlu menyimpan nilai ASCII dari setiap huruf, diimbangi oleh 32, dalam array yang diindeks oleh modulo 5 dari indeks penurunan (jadi 0 0 3 3 2 1 ...). Alasan untuk mengimbangi dengan 32 adalah agar nilai dapat dikalikan dengan bit piksel (1 atau 0) dan kemudian ditambahkan ke 32 untuk menghasilkan spasi atau karakter yang diperlukan.

Array nilai huruf ini disimpan dalam 5 byte pertama kode, sehingga mudah diakses. Ini juga kemudian mempengaruhi pilihan huruf, karena nilai-nilai itu harus bermakna ketika ditafsirkan sebagai urutan kode. Ini urutannya #&49+. The #melompat di atas &dan 49+hanya mendorong 13 ke stack yang kemudian diabaikan.


Anda meminta input integer dengan &, tetapi program Anda tidak benar-benar mengambil input ... apa yang terjadi?
Brian Gradin

Karakter itu dilewati oleh '#'
12Me21

@ 12Me21 Saya menjelaskan alasan di balik paragraf terakhir.
James Holderness

3

Ruby, 110 107 102 byte (DOCIL)

puts a=?D*4+(t=' '*7)+?O*3+t+?C*4+(s=' '*5)+?I*5+s+?L,['D   D'+s+'O   O'+s+?C+' '*11+?I+t+?L]*3,a+?L*4

Cetakan

DDDD       OOO       CCCC     IIIII     L
D   D     O   O     C           I       L
D   D     O   O     C           I       L
D   D     O   O     C           I       L
DDDD       OOO       CCCC     IIIII     LLLLL

EDIT: Menyimpan beberapa karakter dengan menghindari joindan memindahkan barang-barang


3

Befunge-98 , 109 98 byte (FUNGE / ANY)

:5%!2>j#4_;\$&\#;\:0`!#@_:::'@/'@*-\'@/2%*' +,:'@/:2/-'@*-\1+:5%!2>j#4_;' 3k:4k,#;:55*%!2>j#4_;a,;

Cobalah online!

Input (115 karakter):

2022 1141 1134 935 2021 102 1141 1262 103 101 998 1141 1390 1639 997 102 1141 1646 1127 101 102 949 1134 935 2021 0

Input adalah versi integer dari angka biner dengan format di aaaaabbbbbbmana aaaaaadalah peta terbalik dari karakter yang akan dicetak (misalnya, baris kedua dalam N adalah NN N, jadi mask adalah 10011), dan bbbbbbmerupakan karakter ascii untuk dicetak, minus 32 .

Saya juga membuat program befunge-98 untuk membuat input saya:

4k~44p34p24p14p04p          v
+1.+-**244g4%5\**88_@#`0:&::<

Cobalah online!

Output (255 karakter):

FFFFF     U   U     N   N      GGG      EEEEE     
F         U   U     NN  N     G         E         
FFFF      U   U     N N N     G  GG     EEEE      
F         U   U     N  NN     G   G     E         
F          UUU      N   N      GGG      EEEEE     

(255 - (115 + 98)) / 255 = 16% kompresi

Penjelasan:

:5%!2>j#4_;\$&\#;\:0`!#@_     Get input if it is available, else end program
:::'@/'@*-\'@/2%*' +,         Output the current input character (or a space,
                              if the mask dictates so)
:'@/:2/-'@*-                  Throw away current mask bit
\1+                           Swap loop iterator to top of stack, increment it
:5%!2>j#4_;' *3k:4k,#;        If iterator % 5 == 0, print five spaces
:55*%!2>j#4_;a,;              If iterator % 25 == 0, print newline character

Ini mungkin cukup golf; Saya hampir tidak pernah menghabiskan waktu memikirkan potensi pengurangan.

Secara teoritis ini dapat mencetak urutan 5x5 ascii art.

Terima kasih kepada James Holderness karena membantu saya keluar dari tiga digit!


Untuk mengambil gagasan lebih lanjut, 48*dapat diganti dengan ' (karena ini adalah 98 setelah semua), dan 88*dapat diganti dengan '@. Terima kasih telah membantu saya keluar dari tiga digit!
Brian Gradin

3

C #, 290 279 267 265 Bytes

Sunting: Disimpan 12 byte berkat @milk! Dan 2 lagi berkat @TheLethalCoder

Golf:

void F(){string g="     ",h="H   H",A="A   A",B=h+"|"+A;Func<string,string>j=a=>a.Replace("|",g)+"\n";Console.Write(j(" SSSS|"+h+"| AAA |RRRR |PPPP")+j("S    |"+B+"|R   R|P   P")+j(" SSS |HHHHH|AAAAA|RRRR |PPPP")+j("    S|"+B+"|R  R |P")+j("SSSS |"+B+"|R   R|P"));}

Tidak Disatukan:

public void F()
{
  string g = "     ", h = "H   H", A = "A   A", B = h + "|" + A;
  Func<string, string> j = a => a.Replace("|", g) + "\n";
  Console.Write(j(" SSSS|" + h + "| AAA |RRRR |PPPP") +
  j("S    |" + B + "|R   R|P   P") +
  j(" SSS |HHHHH|AAAAA|RRRR |PPPP") +
  j("    S|" + B + "|R  R |P") +
  j("SSSS |" + B + "|R   R|P"));
}

Output:

 SSSS     H   H      AAA      RRRR      PPPP
S         H   H     A   A     R   R     P   P
 SSS      HHHHH     AAAAA     RRRR      PPPP
    S     H   H     A   A     R  R      P
SSSS      H   H     A   A     R   R     P

Ada satu detik di mana saya berpikir bahwa kode C Anda adalah 290.279 byte.
Steven H.

1
@ SevenH. Rasanya seperti Golf di C # :)
Pete Arden

-12 byte jika Anda mendefinisikan fungsi lokal seperti iniFunc<string,string>j=a=>a.Replace("|",g)+"\r\n";
susu

@milk Cool, terima kasih! :)
Pete Arden

Apakah Anda memerlukan \ r di \ r \ n? Akan menghemat 2 byte
TheLethalCoder

3

Stax , 33 byte "BCDEO"

┌☼&.àτ▲█╟;c♦▌ΩÅ╡≤♫¿(┌▲▲≡3*╤J s*è«

Jalankan dan debug itu

Saya mengambil surat itu

  • memiliki simetri vertikal
  • yang tiga kolom tengahnya identik

Properti ini berarti bahwa setiap huruf dapat diwakili oleh kisi 3x3. Berikut adalah 9 wilayah, diwakili oleh angka.

12223
45556
78889
45556
12223

Pertimbangkan huruf "B". Hal ini dapat diwakili oleh 3 digit oktal: 656. Setiap digit berisi tiga bit, yang mengontrol wilayah mana yang diaktifkan untuk huruf itu. Teknik ini juga berfungsi untuk "CDEO".

Dibongkar, tidak diserang, dan dikomentari, programnya terlihat seperti ini.

"!^*14>G2eo"!   crammed integer literal             [63672, 54545, 64565]
|p              palindromize                        [63672, 54545, 64565, 54545, 63672]
m               for each, run this and output...    
  E             extract decimal digits to array     [6, 3, 6, 7, 2]
  `)"+0`        compressed string literal           "BCDEO"
  \             zip arrays                          [[6, 66], [3, 67], [6, 68], [7, 69], [2, 79]]
  {             map array using block               
    E           explode array                       6, 66
    Z\          tuck a zero under, and make pair    6, [0, 66]
    :B          custom base convert                 [66, 66, 0] 
    3)          pad to length 3                     [66, 66, 0]
    3O\         tuck a one under a 3 and pair       [66, 66, 0], [1, 3]
    :B          repeat elements corresponding times [66, 66, 66, 66, 0]
    A(          pad right to length 10              [66, 66, 66, 66, 0, 0, 0, 0, 0, 0]
  m

Jalankan yang ini


2

Python 3, 234 228 227 166 byte (CLOUD):

import base64,gzip;b=b'ABzY86gn$d0{>HR1_A{T@KJyRe}8`nBNU1i6kLFS%Nec$q1YdaQ51tPO;sx(oDBkK&Q=Hwg(wC)8vxUXJX_-c000';print(gzip.decompress(base64.b85decode(b)).decode())

Cetakan:

 CCCC     L          OOO      U   U     DDDD
C         L         O   O     U   U     D   D
C         L         O   O     U   U     D   D
C         L         O   O     U   U     D   D
 CCCC     LLLLL      OOO       UUU      DDDD

2

Python 3, 178 byte

e,f,i,t,h,s='EFITH '
p=print
S=s*5
D=i+s*9+t+s*7
A=e*5+S
F=S+i*5+S
B=e+s*9+f+s*11+D+h+s*3+h
C=h+s*3+h
p(A+f*5+F+t*5+S+C)
p(B)
p(e*4+s*6+f*4+s*8+D+h*5)
p(B)
p(A+f+s*4+F,s+t+s*7+C)

Tidak akan menang, tetapi tidak menggunakan kompresi apa pun. Itu membuat ini:

EEEEE     FFFFF     IIIII     TTTTT     H   H
E         F           I         T       H   H
EEEE      FFFF        I         T       HHHHH
E         F           I         T       H   H
EEEEE     F         IIIII       T       H   H

Setiap bantuan dipersilahkan, saya mungkin melewatkan sesuatu. Saya tidak menggunakan Python 2 karena Anda tidak bisa melakukan itu p=print, dan itu menghemat 17 byte. Cobalah di repl.it.


2
Ada apa dengan F itu?
Destructible Lemon

@DestructibleWatermelon Saya tidak tahu bagaimana saya melewatkan itu, tetapi sudah diperbaiki sekarang.
nedla2004

Bermain golf di bawah ukuran asli: 160 byte, Python 2
CalculatorFeline

Daripada menggunakan p=print, Anda bisa menggunakan satu printpernyataan dengan argumen kw sep='\n'.
Luca Citi

2

Ruby, 101 byte (TIFLE)

"o@h@u".bytes{|i|k=3+i%2;puts "%-10s"*5%"TIFLE".chars.map{|j|i/=2;(i/16>i%2*3?'  ':'')+j+j*k*(i%2)}}

TTTTT     IIIII     FFFFF     L         EEEEE
  T         I       F         L         E
  T         I       FFFF      L         EEEE
  T         I       F         L         E
  T       IIIII     F         LLLLL     EEEEE

Saya memilih huruf yang membutuhkan satu blok huruf (panjang 1,4 atau 5 huruf) di setiap baris. F, L dan E dibenarkan, tetapi T dan saya membutuhkan spasi di mana satu huruf (bagian vertikal) dicetak. Kode untuk menambahkan ruang-ruang ini sepertinya dapat ditingkatkan.

ungolfed

"o@h@u".bytes{|i|               #for each byte (64 always set, 32...2 bits set for horiz bar, 1 bit=length of bar)
   k=3+i%2                      #decode least sig. bit for no of chars printed if a 1 is found
   puts "%-10s"*5%              #puts "%-10s%-10s%-10s%-10s%-10s" format string (expects array of subsitutes)
     "TIFLE".chars.map{|j|      #for each letter 
        i/=2                    #halve i
        (i/16>i%2*3?'  ':'')+   #if i large enough and i%2 zero, add leading space (or T and I)
        j+j*k*(i%2)             #print the letter once, then additional letters if bar required.
     }
}

2

C 176 byte

Jika int implisit diizinkan maka dimungkinkan untuk memotong 8 byte lainnya.

#define C ,//11 bytes
#define R(r)r r r r r//21 bytes
T(int l){int c=324;printf(R(R("%c")R(" "))"\n" R(R(C(++c,l>>=1)&1?c/5:32)));}//77 bytes
f(){T(67010460);T(34702434);T(66160574);T(34702434);T(67010466);}//65 bytes

Output: EDCBA

EEEEE     DDDD       CCCC     BBBB       AAA      
E         D   D     C         B   B     A   A     
EEEEE     D   D     C         BBBB      AAAAA     
E         D   D     C         B   B     A   A     
EEEEE     DDDD       CCCC     BBBB      A   A     

Cara kerjanya: Makro R hanya mengulang sepotong kode 5 kali. Mengingat seberapa sering balita muncul dalam masalah ini, sangat berguna. Sekarang: inilah yang T (int) lakukan. T mengambil bilangan bulat, dan menggunakannya sebagai bidang bit untuk menentukan di mana mencetak huruf dan di mana mencetak spasi putih. Misalnya, jika diberikan T(0b11111111100111111110011100), itu akan menampilkan: EEEEE DDDD CCCC BBBB AAA. Ini semakin menghitung mundur untuk huruf apa yang dicetaknya. Pertama mencetak E, lalu D, lalu C, lalu B, lalu A. Memanggil f () akan mencetak semuanya.


2

Batch, 135 byte (DOCILe)

@set b=     
@set s=@echo DDDD%b%  OOO%b%  CCC%b% IIIII%b%L
@set t=@echo D   D%b%O   O%b%C%b%%b% I%b%  L
%s%
%t%
%t%
%t%
%s%LLLL

Catatan: baris pertama berakhir dalam 5 spasi.


2

PESTA, 95, 111 byte (EBASH)

Golf

base64 -d<<<4ADlADhdACLpBDSMnNdRTj0Ob2qBPVT3HkdMRZzZ3kL+yIb6mhkz06EM+KOspSDy2EBoUKKL6pfwNo0akV0zAA==|xz -dqFraw

Penjelasan

Base64 melalui stream byte LZMA mentah

Demo

>base64 -d<<<4ADlADhdACLpBDSMnNdRTj0Ob2qBPVT3HkdMRZzZ3kL+yIb6mhkz06EM+KOspSDy2EBoUKKL6pfwNo0akV0zAA==|xz -dqFraw

EEEEE     BBBB       AAA       SSSS     H   H
E         B   B     A   A     S         H   H
EEEE      BBBB      AAAAA      SSS      HHHHH
E         B   B     A   A         S     H   H
EEEEE     BBBB      A   A     SSSS      H   H

Penolakan

Ya, saya sangat menyadari bahwa ini tidak benar-benar portabel, itu sebabnya saya telah membayar satu byte untuk menekan peringatan xz dengan -q dalam kasus pertama> :)


2

Python 2, 208 194 193 byte

Ini adalah golf kode pertama saya;) Menyenangkan untuk dilakukan

for i in range(0,25,5):
 for c,p in {'M':18732593,'O':15255086,'N':18667121,'T':32641156,'Y':18157700}.items():
  print format(p,'025b')[i:i+5].replace('0',' ',).replace('1',c)+'   ',
 print

Keluaran:

Y   Y    M   M    TTTTT     OOO     N   N
 Y Y     MM MM      T      O   O    NN  N
  Y      M M M      T      O   O    N N N
  Y      M   M      T      O   O    N  NN
  Y      M   M      T       OOO     N   N

Menggunakan kamus menghancurkan urutan huruf, tapi itu bukan keharusan


Itu bisa dilakukan -4 jika kita mengambil huruf yang tidak menggunakan sudut kiri atas. Ini akan menghasilkan angka 24 bit (bukan 25 bit) yang mengambil satu digit kurang dalam hex.
Pleiadian

2

perl 94 byte.

Pertama 4 huruf ( D, O, I, C) secara khusus dipilih untuk memiliki garis atas dan bawah sama, dan yang tengah serupa. Karena tidak ada surat serupa lainnya, saya memilih "L" untuk dapat menerapkan algoritma yang sama dan menambahkan 4L yang hilang.

for(($a="D5 6O3 6I5 6C4 5L")."
","D 3D 5O 3O 7I 7C 9L
"x3,$a."4L
"){s/(.)(\d)/$1x$2/eg;print}

Saya menyimpan beberapa byte tambahan dengan mengganti \nkode dengan baris baru yang nyata.

Hasil:

DDDD       OOO      IIIII      CCCC     L
D   D     O   O       I       C         L
D   D     O   O       I       C         L
D   D     O   O       I       C         L
DDDD       OOO      IIIII      CCCC     LLLLL
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.