5 Favori Harfler


90

Buradaki zorluk aslında son derece basittir. 5 farklı harf seçin (isterseniz, size en kısa kodu sağlayan 5'i seçebilirsiniz) ve bunları konsola gönderin. Ancak, büküm onların aşağıdaki listeden olması gerektiğidir:

 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

Ek Kurallar:

  • Aynı mektubun 5 tanesine izin verilmiyor, tekrarlama seçeneği yok.
  • Her harf, başkenti çizmek için ascii karakter olarak kullanmalıdır.
  • Her harf çıktısı "aynı satırda" olmalı ve her harf arasında 5 boşluk olmalıdır.
  • Sen tercih edebilir herhangi istediğiniz, bu Kodun bir kısmı yeniden ve bayt sayısını düşürmesi sağlayacak 5 harf. Hangi harflerin en verimli şekilde yapmanıza izin vereceğini bulmak zorluğun bir parçası.
  • Sondaki boşluklar kabul edilebilir.
  • Tek bir izleyen yeni satır kabul edilebilir, ancak birden fazla izleyen yeni satır değil.
  • Bu kod golf, en düşük bayt sayma kazançtır.

Örnekler:

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    

ÇILGIN

 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  

Her seferinde farklı harflerle veya farklı stratejilerle birden fazla cevap göndermekten korkmayın, bu çeşitli şekillerde gerçekleştirilebilir.


21
Hangi harflerin çıkarılacağını seçmenizi seviyorum; bu da golf oynamaya başka bir katman katıyor. ASCII sanatıyla ilgili küçük sorunlar: bir sürü iz bırakma alanı ve iki Jsaniye var.
ETHProductions

2
Giriş olarak 5 harf almak için bir bonus ekleyebilir misiniz?
Mukul Kumar,

5
Bonuslar kaşlarını çattı ve bunun gibi sert bir değişiklik yapmak için çok fazla cevap var. Ama sana bir artı değer vereceğim;).
Magic Octopus Urn,

1
@Titus Neden onlara ihtiyacın olduğunu bilmiyorum; takip etmek daha mantıklı. Mantıksal bir açıklamaya Eğer kullandığınız dilin sınırlama ve mantık değil size yazdım bir lider neden olduğunu \n, bunu sağlayacaktır.
Magic Octopus Urn,

1
@Titus sonra hayır. Sondaki yeni satırlar ve boşluklar, bazı dillerin programatik sınırlamaları nedeniyledir.
Magic Octopus Urn

Yanıtlar:


12

Jöle , 41 bayt

LICTE

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

TryItOnline!

Fikir

Harf başına satır başına her bir "piksel değerinin" yalnızca bir çalıştırma uzunluğu ile mümkün olduğu kadar ortası ortada olan harflerle bir kod uzunluğu kullanın.

Sıralar için farklı çalışma uzunluğu kod çözme değerlerinden kaçınmak için "L" gibi düz bir başlangıç ​​yapın.

Sonundaki üç orta sıranın bir farklı harfini (5 bulamadı) yerleştirin, böylece en küçük fark aritmetik olarak eklenebilir.

Çıktı istedi; çalışma uzunlukları; ve bunlar taban 11'den dönüştürülmüş:

                                                  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

Üç değer 399633415, 431646160ve 1179122455baz içinde 250jöle kod sayfası endeksleri olarak daha sonra ðƁ ƥ, ȷɓSɠve JrŀṘsayı-uzunluk bilgi kapsüllemek için kullanılabilecek.

Kod

“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
Başlangıçta benim 05AB1E'de yapacak kadar akıllı olmadığım fikrini yaptınız !!! Şaşırtıcı iş adamı.
Magic Octopus Urn,

32

Kömür , 51 49 bayt (ECXKI)

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

çıktılar

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

Çevrimiçi deneyin!

Dikey olarak simetrik olan karakterleri kullanarak, üst yarıyı çizer ve sonra yansıtır. Bunların çoğu, belirli bir karaktere sahip bir dizi bağlı çizgi parçası çizmek için Polygon ( ) ve PolygonHollow ( GH) yöntemini kullanır . yön olarak kullanarak IMultiPrint ( ) ile daha kolay bir şekilde yapılabilir T.

Not: PolygonHollow, yalnızca poligonu doldurmadan veya doldurmadan belirtilen kısımları çizer. Poligon tamamlamak ve (biz istediğini değil) dolduracaktır eğer çokgen sekiz kardinal veya intercardinal yönlerden birinde basit bir çizgi ile tamamlanabilir. Aksi takdirde, bir bayt tasarruf için PolygonHollow gibi davranır.

Karakter sırası, bir uç noktadan diğerinin başlangıcına kadar sadece yatay hareketler gerektirecek şekilde seçildi. İmleç şu şekilde devam eder:

Cursor movement, drawing top halves of ECXKI


2
Güzel. Kömür çözümü
deniyordum

6
@Basdrop Evet, biz ... um ... bunun üzerinde çalışıyoruz. [ GHdocs eklemeye gider ]
DLosc

19

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

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

Fikir, harfler arasındaki boşlukları en üst düzeye çıkarmaktır, böylece tekrarlanan kompresyonları alabiliriz.

Florent'in cevabından orta sıradaki tekilleştirme aldatmacasını ödünç alıyor . Ortadaki üç sıra için dize çarpımı ve Matt sayesinde ek bir bayt kullanarak Ben Owen sayesinde 6 bayt kurtarıldı .

Çıktı,% 53.7 azalma için 227 baytta aşağıdaki gibidir.

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

İlk cevap hiç ummadığınız bir şey olduğunda onu seviyorum. Temiz bir yöntem.
Sihirli Ahtapot Urn

2
$("L11 I1 C11 T1 D D`n"*3)Ortadaki 3 sıra yerine nasıl olur
Ben Owen

@BenOwen Mükemmel fikir - teşekkürler!
AdmBorkBork,

13

JavaScript, 110 109 bayt (CLOUD)

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

Çıktı 227 bayttır:

 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
Ortadaki üç satırdaki veri tekilleştirme güzel kullanımı.
AdmBorkBork,

12

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

Bu uzun ve gerçekten optimize edilmemiş (en azından henüz değil), ancak yalnızca bitmap verilerini değiştirerek belirli bir mesajı yazdırmak için değiştirilebilir.

EDIT: Değiştirilen iç harita ile azaltma , dolgu için bit kaydırma kullanın

golfed

[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`

gösteri

[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

Bir mektup al:

IIIII      
  I        
  I        
  I        
IIIII 

İkili matrise dönüştürmek (bitmap)

11111
00100
00100
00100
11111

diğer 4 harf için de aynısını yapın, her birinden 5 bit “üst” alarak bir satır tarayın

11111 01110 01110 10000 11111

onaltılık bir dizeye dönüştürün (burada base36 veya hatta yazdırılabilir ASCII kullanmanız gerekir)

0x1f73a1f

bitmap'i elde etmek için aynı algoritmayı diğer 4 satıra uygulayın.

Ters sırada Render.


1
2 bayt tasarruf için parantezleri
regex'den çıkarabilirsiniz

1
[32979487,4736528,4834846,4769296,32979952] onaltılık gösteriminden daha kısa
Florent

@ETHproductions Doğru, onu optimize etmek için geri döneceğim zaman, bunu kullanacak. Teşekkür!
zeplin

1
Sen yerini alabilir /(1|0)/gtarafından /\d/gbirkaç byte kaydedin. Ayrıca \ngerçek yeni bir satırla değiştirilebilir.
Florent,

> onaltılık gösterimi daha kısa olan Yep, doğrudur (0x nedeniyle), en azından bu belirli harfler için, muhtemelen bir sonraki yinelemede sürekli bir altıgen (veya hatta Base32 / Base36 / ASCII) dizgisine sıkıştıracağım. . > Birkaç bayttan tasarruf etmek için / (1 | 0) / g / g / g ile değiştirebilirsiniz. Ayrıca \ n, yeni bir satırla değiştirilebilir. Evet, ipuçlarınız için teşekkür ederim, bunlara geri döndüğümde onlardan faydalanacağım.
zeplin

12

PHP, 107 104 102 94 86 bayt

Tamam, şimdi bu yöntemle mümkün olan en küçük kaynağa sahip olduğuma eminim. Beş harfin olası her bir kombinasyonunu oluşturmak için gzip oluşturmak için bir senaryo yazdım. En kısa sıkıştırılmış ile eşleşen iki çözüm vardır - LODIC ve LDOIC. Eski ile gidiyorum çünkü söylemesi daha eğlenceli.

Kaynak:

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

Çıktı:

% 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
's bırakarak 2 bayt kaydedebilirsiniz : dize kendi değeri ile sabit olarak kabul edilir.
user59178 15:16

Kahretsin, bunu yapmayı her zaman unuturum. :)
Alex Howansky,

L senin son mektubun olsaydı, daha fazla bayt kurtarırdın.
Magic Octopus Urn,

Bir kaçamaktan iyi yararlanma.
Ismael Miguel

2
Yaratıcılık özneldir ve ölçülemez. Bu zorluğun amacı, kod boyutunu en aza indirmek ve golf oynamayan bir dil için en kısa yol.
Alex Howansky,

10

05AB1E , 44 bayt

Bu eğlenceli bir şeydi.
Geri dönüp biraz zamanım olduğunda biraz daha golf oynamaya ihtiyacım olduğunu hissediyorum.

CP-1252 kodlamasını kullanır .
Esinlenerek carusocomputing en cevabı .

ECOIH

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

Çevrimiçi deneyin!

açıklama

‘ÓÑOIHH‘dizeyi iter "ECOOIHH".

SðýJ3×Sdizgiyi boşluklarla birleştirir, üç kez tekrarlar ve bir listeye dönüştürür.
Sonuç listesi ['E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H'].

•Td<UÕ‘áÓ?¢tWvkÔÚ•sayıyı iter 564631055513119191317171314619131717500.

S)ø Listeyi ve numarayı birlikte sıkıştırır.

ü×Jçiftli dize tekrarı yapar ve bunları birleştirir.
Sonuç, dizgedir EEEEE CCCC OOO IIIII H HE C O O I H HEEEE C O O I HHHHH.

3äû»3 parçaya böler, birinci ve ikinci parçayı ters sırayla ekler ve yeni satırlara katılır.


13
" •Td<UÕ‘áÓ?¢tWvkÔÚ•Sayısını iter 564631055513119191317171314619131717500de neden ... olmaz çünkü"
geisterfurz007

3
@ geisterfurz007: Daha kesin olmak gerekirse, bu :) baz-10 sayısının baz-214 gösterimi var
Emigna

Yani potansiyel olarak daha yüksek bir üsse gidebilirseniz dizeniz kısalır mı?
geisterfurz007 16:16

@ geisterfurz007: Evet yapabilirsek. Maalesef 214, 05AB1E'deki maks.
Emigna

3
Jelly'i yenebilirsin, sana inanıyorum; Haha gitmek için 3 bayt kaldı!
Magic Octopus Urn,

9

JavaScript (ES6), 96 bayt (DIOCL)

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

Buradaki fikir, ortadaki üç çizgiyi aynı yapmakla kalmayıp, aynı zamanda ilk çizgiyi sonuncuyla neredeyse aynı hale getirmektir. Mükemmel bu tanıma uyan sadece 4 harf olduğundan CDIO, Lyalnızca dizenin sonunda 4 eklenen karakterleri gerektirdiğinden, bir sonraki en iyi seçenektir.

Olduğu gibi Florent cevabı , bu sonuç döndürür snippet'idir. Bir işlev olması gerekiyorsa 3 bayt ekleyin.

Test pasajı


Dİlki koyarak bir bayt kaydedebilirsiniz .
Neil

@Neil Teşekkürler. Harekete geçmek zorundaydım Cgeçmiş Ive Oaynı zamanda
ETHproductions

Ah, doğru, Ihemen sonra sahip olamazsınız C, ilginç bir şekilde bunu yapmak Batch çözümümü geliştirir, ancak aynı sebepten.
Neil

9

Figletli Bash + coreutils, 55440 çözüm, her biri 112 106 bayt

 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

Çıktı:

HH EEEEE L PPPP DDDD  
HHELPPDD 
HHHHH EEEE L PPPP DD 
HHELPDD 
HH EEEEE HAYAT P DDDD  
                                              

Hey, zaten ASCII sanatı için bir programımız var ! Afiş o 7x7 harfleri çıkışı hariç yazı neredeyse işi yapar. Hmm, haydi 3. ve 5. sütunları ve 2. ve 5. çizgileri kaldıralım ve ne verdiğini görelim ...

Birçok harfin BDEFHJLPTU Z.'den istenen şekilde çıktısını alacağı ortaya çıktı.

Doğru bir sonuç elde etmek için ilk set komutunun argümanlarını bu harflerin herhangi bir kombinasyonu ile değiştirmek yeterlidir ! Dolayısıyla, bu bize her biri 106 bayt olan 11 * 10 * 9 * 8 * 7 = 55440 çözüm sağlıyor.


1
Mücadeleyi okurken ilk düşüncem "bunu çözmek için figlet kullanmak zorunda"

6

05AB1E , 102 90 89 69 bayt (EOIXC)

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

Çevrimiçi deneyin!

Çıkış (230 bayt):

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/230 =% 70 Sıkıştırma

Açıklama:

Teori, dikey olarak simetrik harfleri seçmekti, sonra ilk 3 satırı bir palindromize ederek kodladı. Temel olarak, 2 byte çiftinde {#} harfini {Letter} olarak kodladım. Eminim bunu yapmanın daha iyi bir yolu vardır.

•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 bayt Emigna sayesinde, yakında bazı soruları sormak için sohbette olacağım;).


1
Dize ile değiştirerek 19 bayt kaydedebilirsiniz •Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚîòvÅr葾)jM•34B2ð:. Kodlama hakkında sorularınız varsa 05AB1E sohbetine katılın.
Emigna,

1
Ayrıca, 45ôolabilir .
Emigna,

@ Emigna Adikey olarak simetrik değildir ve hiçbiri değildir F. Tahmin etmeye gitmek, kullanmaya başladığınızda Gveya daha yükseğe çıktığında, neden bahsettiğinizi mahveder? Ayrıca, sıkıştırma metodolojimde satır başına 1'den fazla tekrarlanan harflerden kaçınmak istedim. Bu çözümü oynamak ve beni yenmek için bu örneği memnuniyetle karşılayacağım :).
Magic Octopus Urn,

Bir var 0içinde O(sağ taraf, merkezi sıranın)
ETHproductions

1
•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚúNÏŒº9¨gÚSÞ•Oaynı bayt sayısında düzeltir .
Emigna,

5

JavaScript ES6, 168 bayt, CHAMP

Erkekleri aramayı bırakabiliriz, CHAMPburada bir üstümüz var

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 Bayt

Daha iyi yinele:

Bu, bandı optimize etmek için kurulum karakterlerinden fedakarlık ederek, bandı optimize etmek için daha iyi bir iş çıkarır. Bu kasetteki bant 'C' 'E' ' ' 'F' 'I' 'L' '\n'verimliliği arttırıyor gibi görünüyor . Bunları seçtim çünkü iç boşluklardan yoksunlar, karakter ve mekan arasında gereğinden fazla ileri geri gitmek zorunda kalmayacak şekilde yapıyorlar

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

Ne yaptığını okumak istiyorsanız:

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

Çıktı:

 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

Eski Gönderme:

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

ABCDE'ye girmeyi seçtim çünkü çıkış için kaseti çok daha kolay hale getirdi, ama A, B ve D içindeki tüm negatif boşluklar için harften '' 'ye kadar harcadığım zaman ve karakterler ve Sanırım kasetin sonundaki çizgi beni öldürdü sanırım.

Değerleri olan bir kasetle bitirdim 0 0 'A' 'B' 'C' 'D' 'E' ' ' \nve oradan çıktım

++++++++[>++++<-]>[>++>++>++>++>++>+<<<<<<-]>+>++>+++>++++>+++++>>++++++++++     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

Çıktı:

 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

Sen kullanabilirsiniz [<]>6 bayt kaydetmek için 3 kez.
Jo King,

5

Vim, 116 bayt 99 bayt

ELITC

@DrMcMoylex yardımı ile 100'ün altında golf oynadı.

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

Bu, yazdırılamayan karakterler içeriyor, bu yüzden aşağıya onları ekledim (Vim stili), böylece onları görebilirsiniz.

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

TryItOnline!

Temel olarak, jöle cevabının yaptığı aynı uzunluktaki kod çözücüyü kullanır. Umarım üstte üstünü tekrarlayabildiğim harfleri kullandım, ortalıklar da aynı olurdu. Üstler, altlar ve aralar oluşturulduktan sonra karakterleri düzeltmek için düzenlerim:

  1. I'ye iki boşluk ekleyin (aşağıdakiler üzerine daha fazlası)
  2. T'ye iki boşluk ekleyin
  3. E çubuğunu ekleyin
  4. L'nin üst kısmını çıkarın
  5. T'nin alt kısmını çıkarın (ve 2 boşluğu silin)

I'ye iki boşluk eklemek zorundayım, çünkü iki haneli sayılara izin vermedim (böylelikle bir ayırıcıya ihtiyacım olmaz. Bu, 11'e ihtiyacım olan 9 boşluğuna yol açar.


PPCG'ye hoş geldiniz, güzel cevap :).
Magic Octopus Urn,

Neredeyse bir Vim cevabı için yalvarıyordum.
Zoltán Schmidt

2
Ben her zaman takma oy verdim. :) Bazı iyileştirmeler görüyorum. 1) ikame komutunuzda sondaki eğik çizgiye ihtiyacınız yoktur. 2) bazı yararlı eş: Yyerine Vy, FIyerine ?I<cr>, {yerine gg, wyerine fl. 3) ryerine kullanırsanız R, kaldırabilirsiniz <esc>.
DJMcMayhem

5

MATL , 49 bayt

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

Çevrimiçi deneyin!

Bu harfleri üretir 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

açıklama

Tsıfırdan inşa etmek nispeten kolaydır. Iesasen Tartı dikey yansıması olarak da elde edilebilir . Holduğu Iaktarılmamıştır. Nolduğu Zaktarılması ve dikey olarak yansıtılan.

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 bayt

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

Çevrimiçi deneyin!

Bu çıktılar 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 bayt (ABCDE)

Not : Bu, test kolaylığı için kaçan yazdırılamaz karakterleri içerir xxd;

$_="\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

Harf konumlarının ikili gösterimini sayı olarak saklar, daha sonra bir aramayı kullanarak s'yi 0boşluk ve 1s ile değiştirerek karşılık gelen harfle değiştirerek ikili dosyaya geri alır . Mektup temsilini saklamak oldukça kolaydır, ancak bunları değiştirmek umduğumdan daha zor çıktı. Bunu yapmanın daha iyi yolları olduğuna eminim, bu yüzden oynamaya devam edebilirim.

Dosyayı yeniden oluşturmak için çalıştırın xxd -r > favourite-letter.pl, aşağıya yapıştırın ve Ctrl+ tuşlarına basın 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

kullanım

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,121 bayt

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

Diğer cevabımı benzer , ancak daha iyi mektup seçenekleri ile. Bunu çıktılar:

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 bayt (CKYTF)

Kaynak

#&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:

Çıktı

  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

Çevrimiçi deneyin!

Önemli olması durumunda çıktılarımın her satırda öncü bir boşluğa sahip olduğunu belirtmeliyim. Kurallar açıkça yasaklamıyordu, bu yüzden umarım tamamdır. Olmazsa, lütfen bunu yalnızca rekabet dışı bir giriş olarak kabul edin.

açıklama

Kelimenin harfleri, her biri 5 pikselden oluşan ikili bir temsil olan 25 tamsayının basit bir dizisi olarak kodlanmıştır. Befunge, 9'dan büyük herhangi bir tamsayıyı somutlaştırmak için bir hesaplama yapmanızı gerektirdiğinden, gerekli hesaplama sayısını en aza indirecek şekilde harfler seçildi ve yeniden sipariş edilmek yerine potansiyel tekrarlanan değerlerin kopyalanabilmesi için sipariş edildi.

Ayrıca her bir harfin ASCII değerini 32 ile dengelenmiş, bir azalan dizinin modulo 5 tarafından indekslenen bir dizide saklamamız gerekir (bu yüzden 0 4 3 2 1 ... olur). 32 ile dengeleme nedeni, değerin bir piksel biti (1 veya 0) ile çarpılabilmesi ve ardından bir boşluk veya gereken karakter üretmek için 32'ye eklenmesidir.

Bu harf değeri dizisi, kodun ilk 5 baytında depolanır, bu nedenle erişimi kolaydır. Bu aynı zamanda harf seçimini de etkiledi, çünkü bu değerlerin kod dizisi olarak yorumlandığında anlamlı olması gerekiyordu. Bu dizi #&49+. Üzerinden #atlar &ve 49+sadece 13 sonradan yok sayılan istifin üzerine iter.


Tamsayı girişi için soruyorsunuz &, ancak programınız aslında girdi almıyor ... neler oluyor?
Brian Gradin

Bu karakter '#' ile atlanır
12Me21

@ 12Me21 Son paragrafta bunun arkasındaki nedeni açıkladım.
James Holderness

3

Ruby, 110 107 102 bayt (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

Baskılar

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: joinEtrafından kaçınarak ve hareket ettirerek bazı karakterleri kurtardı


3

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

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

Çevrimiçi deneyin!

Giriş (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

Giriş, ikili sayının biçimiyle tam sayı sürümüdür aaaaabbbbbbaaaaa basılacak karakterin tersine çevrilmiş bir haritasının bulunduğu (örneğin, N'deki ikinci satır NN N, yani maskedir 10011) ve bbbbbbyazdırılacak ascii karakter .

Ayrıca girdilerimi oluşturmak için bir befunge-98 programı hazırladım:

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

Çevrimiçi deneyin!

Çıktı (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 sıkıştırma

Açıklama:

: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

Bu muhtemelen oldukça golf oynamaktadır; Potansiyel indirimleri düşünmekle neredeyse hiç zaman geçirmedim.

Teorik olarak, bu 5x5 ascii sanatının herhangi bir dizisini basabilir.

Üç haneli rakamlardan kurtulmama yardım ettiğin için James Holderness'e teşekkürler !


Fikri daha ileri götürmek için 48*, bununla değiştirilebilir ' (sonuçta bu 98'dir) ve 88*ile değiştirilebilir '@. Üçlü rakamlardan kurtulmama yardım ettiğin için teşekkürler!
Brian Gradin

3

C #, 290 279 267 265 Bayt

Düzenleme: @milk sayesinde 12 bayt kaydedildi! @TheLethalCoder ile 2 tane daha teşekkürler

golfed:

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"));}

Ungolfed:

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"));
}

Çıktılar:

 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

C kodunuzun 290279 bayt uzunluğunda olduğunu düşündüğüm bir saniye vardı.
Steven H.

1
@StevenH. Bu şekilde hissettiriyor Golf C # :)
Pete Arden

-12 bayt, yerel işlevi bu şekilde tanımlarsanızFunc<string,string>j=a=>a.Replace("|",g)+"\r\n";
süt,

@milk Cool, teşekkürler! :)
Pete Arden,

\ R \ n \ 'de \ r \' ye ihtiyacınız var mı? 2 byte tasarruf
edersiniz

3

Stax , 33 bayt "BCDEO"

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

Koş ve hata ayıkla

Mektupları seçtim

  • dikey simetriye sahip
  • ortadaki üç sütunu aynı olan

Bu özellikler, her harfin 3x3 ızgarası ile temsil edilebileceği anlamına gelir. Rakamlarla gösterilen 9 bölge.

12223
45556
78889
45556
12223

"B" harfini düşünün. 3 sekizlik basamakla gösterilebilir:656 . Her hane, o harf için hangi bölgelerin etkinleştirildiğini kontrol eden üç bit içerir. Bu teknik aynı zamanda "CDEO" için de çalışır.

Paketten çıkarılmış, ağlanmamış ve yorumlanmış, program buna benziyor.

"!^*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

Bunu çalıştır


2

Python 3, 234 228 227 166 bayt (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())

Baskılar:

 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 bayt

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)

Kazanmaz, ancak sıkıştırma kullanmaz. Bunu yapar:

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

Herhangi bir yardım kabul edilir, muhtemelen bir şey özledim. Python 2'yi kullanmadım, çünkü bunu yapamazsınız p=printve bu 17 baytı kurtarır. Tekrar dene.


2
Bu F'nin nesi var?
Yıkılabilir Limon

@DestructibleWatermelon Bunu nasıl kaçırdım bilmiyorum ama şimdi düzeltildi.
nedla2004

Orijinal boyutunun altında golf oynadı: 160 bayt, Python 2
CalculatorFeline

Kullanmak yerine , kw argümanıyla p=printtek bir printifade kullanabilirsiniz sep='\n'.
Luca Citi

2

Ruby, 101 bayt (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

Her satırda tek bir harf bloğu (1,4 veya 5 harf uzunluğunda) gerektiren harfler seçtim. F, L ve E haklı bırakılır, ancak T ve ben tek bir harfin (dikey kısım) basıldığı ön boşluklar gerektirir. Bu boşlukları ekleme kodu iyileştirilmiş gibi görünüyor.

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 bayt

Örtük girişlere izin verilirse, 8 baytı daha kesmek mümkündür.

#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

Çıktı: 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     

Nasıl çalışır: Makro R sadece 5 kez bir kod parçasını tekrarlar. Bu problemde beşliğin ne sıklıkta ortaya çıktığı göz önüne alındığında, çok faydalı. Şimdi: İşte T (int) öyle. T bir tamsayı alır ve harflerin nerede yazdırılacağını ve beyaz alanın nerede yazdırılacağını belirlemek için onu bir bit alanı olarak kullanır. Verilen Örneğin, T(0b11111111100111111110011100)bu çıktıyı yapacaktır: EEEEE DDDD CCCC BBBB AAA. Hangi harfin basılacağını aşamalı olarak sayar. Önce E, sonra D, sonra C, sonra B, sonra A basar. F () işlevinin tümü yazdırır.


2

Toplu, 135 bayt (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

Not: İlk satır 5 boşlukta bitiyor.


2

BASH, 95, 111 bayt (EBASH)

golfed

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

açıklama

Ham LZMA bayt akışı üzerinden Base64

gösteri

>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

feragat

Evet, bunun gerçekten taşınabilir olmadığının farkındayım, bu yüzden ilk durumda -q ile xz uyarılarını bastırmak için bir byte ödedim > :)


2

Python 2, 208 194 193 bayt

Bu benim ilk kod golf benim;) yapmak eğlenceli

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

Çıktı:

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

Sözlük kullanmak, harflerin sıralama düzenini imha eder, ancak bu bir gereklilik değildi.


Sol üst köşeyi kullanmayan harfleri alırsak -4 yapabilir. Bu, altıgen bir rakamdan daha az olan 24 bit (25 bit yerine) sayıyla sonuçlanır.
Pleiadian

2

perl 94 bayt.

İlk 4 harf ( D, O, I, C) özel içindeki üst ve alt hatları için seçilir ve orta olanlar benzerdir. Başka benzer bir harf olmadığı için, aynı algoritmayı uygulayabilmek ve eksik 4L'yi eklemek için "L" yi seçtim.

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

\nKoddaki yeni bir satırla değiştirerek fazladan baytlar kaydettim .

Sonuç:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.