5お気に入りの手紙


90

挑戦は実際には非常に簡単です。5つの異なる文字を選択し(必要に応じて最短のコードを許可する5文字を選択できます)、それらをコンソールに出力します。ただし、ツイストは、それらが次のリストからのものでなければならないということです。

 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

追加のルール:

  • 同じ文字の5は許可されず、繰り返し選択はできません。
  • 各文字は、それを描くためのアスキー文字としてそれ自体の大文字を使用する必要があります。
  • 各文字出力は「同じ行」にあり、各文字間に5つのスペースが必要です。
  • 任意の 5文字を選択できます。これにより、コードを再利用し、バイト数を減らすことができます。これを最も効率的に行うことができる文字を特定することは、課題の一部です。
  • 末尾のスペースは許容されます。
  • 末尾の改行は1つでもかまいませんが、末尾の改行は1つだけです。
  • これはコードゴルフであり、バイト数が最も少なくなります。

例:

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    

クレイジー

 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  

毎回異なる文字または異なる戦略を使用して複数の回答を送信することを恐れないでください。これはさまざまな方法で実現できます。


21
どの文字を出力するかを選択できるのが好きです。それはゴルフに別の層を追加します。ASCIIアートの軽微な問題:後続のスペースが大量にあり、2つJのスペースがあります。
ETHproductions

2
入力として5文字を受け取るとボーナスを追加できますか?
ムクルクマール

5
ボーナスは眉をひそめ、そのような抜本的な変更を行うには答えが多すぎます。しかし、私はあなたに賛成票を差し上げます;)。
魔法のタコUr

1
@タイタス私はあなたがそれらを必要とする理由がわかりません。トレーリングはより理にかなっています。あなたが書いたロジックはなく、使用している言語の制限がリードを引き起こしていることを論理的に説明できるなら、私はそれを許可します。\n
魔法のタコUr

1
@タイタスその後いいえ。末尾の改行とスペースは、特定の言語のプログラム上の制限によるものです。
魔法のタコUr

回答:


12

ゼリー、41 バイト

LICTE

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

TryItOnline!

アイデア

文字ごとに行ごとに各「ピクセル値」のランレングスが1つだけで、できるだけ中間に近い文字でランレングスデコードを使用します。

行の異なるランレングスデコード値を避けるために、「L」のようなフラットスタートを設定します。

最後の中央の3行のうち、1つの異なる文字(5は見つかりませんでした)を最後に配置して、最小の差を算術的に追加できるようにします。

出力が必要です。ランレングス; これらはベース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

三つの値399633415431646160および1179122455塩基で250ゼリーコードページインデックスは、次にあるようにðƁ ƥȷɓSɠおよびJrŀṘどのランレングス情報をカプセル化するために使用することができます。

コード

“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
あなたは、私が05AB1Eでやるほど頭が良くないという当初考えていました!素晴らしい仕事人。
魔法のタコUr

32

木炭51 49バイト(ECXKI)

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

出力

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

オンラインでお試しください!

上下対称のキャラクターを使用して、上半分を描画してから反射します。これらのほとんどは、Polygon()およびPolygonHollow(GH)を使用して、特定の文字で接続された一連のラインセグメントを描画します。方向として使用して、IMultiPrint()でより簡単に行うことができますT

注:PolygonHollowは、指定されたセグメントを描画するだけで、ポリゴンを完成したり塗りつぶしたりすることはありません。8つの基本方向または内部方向のいずれかの単純な線で多角形を完成できる場合、多角形は完成します(必要なものではありません)。それ以外の場合、1バイトの節約のため、PolygonHollowのように動作します。

文字の順序は、1つの終点から次の終点までの水平方向の移動のみを必要とするように選択されました。カーソルの進み方は次のとおりです。

カーソルの動き、ECXKIの上半分を描画


2
いいね 私は、炭のソリューションをしようとしていたが、ドキュメントの欠如は、正直私を殺した
Bassdrop Cumberwubwubwub

6
@Bassdropええ、私たちは...えーと...それに取り組んでいます。[追加することになりGH、ドキュメントへ]
DLosc

19

PowerShellのV2 +、138 128 114 112 106 105バイト(LICTD)

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

アイデアは、文字間のスペースを最大化して、繰り返し圧縮できるようにすることです。

Florentの回答から中列の重複排除トリックを借用します。中央の3行に文字列の乗算を使用してBen Owenに感謝し、Mattに1バイトを追加して6バイト節約しました。

出力は、227バイトで次のようになり、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

最初の答えがあなたがまったく期待していなかったものであるとき、私はそれが大好きです。きちんとした方法。
魔法のタコUr

2
どの程度$("L11 I1 C11 T1 D D`n"*3)の代わりに、中央3行の
ベン・オーウェン

@BenOwen素晴らしいアイデア-ありがとう!
AdmBorkBork

13

JavaScript、110 109バイト(クラウド)

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

出力は227バイトです。

 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
中央の3行で重複排除をうまく使用しています。
AdmBorkBork

12

ES6(Javascript)、 194、181バイト(IGOLF / ANY)

これは長く、実際には最適化されていません(少なくともまだ)が、ビットマップデータを変更するだけで、特定のメッセージを印刷するように変更できます。

編集:インナーリデュースマップに置き換え、パディングにビットシフトを使用

ゴルフ

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

デモ

[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         

理論

手紙を受け取ります:

IIIII      
  I        
  I        
  I        
IIIII 

バイナリ行列(ビットマップ)に変換します

11111
00100
00100
00100
11111

他の4文字についても同じ操作を行い、各行から「上位」5ビットを取得して行をスキャンします

11111 01110 01110 10000 11111

16進文字列に変換します(ここではbase36または印刷可能なASCIIを使用する必要があります)

0x1f73a1f

同じアルゴリズムを他の4行に適用して、ビットマップを取得します。

逆の順序でレンダリングします。


1
正規表現の括弧を削除して2バイトを節約できます:
ETHproductions

1
[32979487,4736528,4834846,4769296,32979952] その16進表現よりも短くなっている
フロラン

@ETHproductions True、最適化に戻ったときにこれを利用します。どうも!
ツェッペリン

1
あなたは置き換えることができます/(1|0)/gによって/\d/g数バイトを保存します。また\n、実際の新しい行に置き換えることもできます。
フローレント

> 16進数表現よりも短いYep、つまり(少なくとも0xのため)true 。>数バイトを節約するために、/(1 | 0)/ gを/ \ d / gに置き換えることができます。また、\ nは実際の新しい行に置き換えることができます。うん、あなたのヒントをありがとう、私はこれに戻ったらそれらを利用します。
ツェッペリン

12

PHP、107の 104 102 94 86バイト

わかりました。この方法で可能な限り最小のソースがあると確信しています。5文字の可能な組み合わせをすべて生成し、gzipするスクリプトを作成しました。最短の圧縮に一致する2つのソリューション、LODICとLDOICがあります。前者と言うのは、言うのがもっと楽しいからです。

ソース:

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

出力:

% 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をドロップすることで2バイト節約できます。文字列はそれ自体の値を持つ定数として扱われます。
user59178

くそー、私はいつもそれをするのを忘れています。:)
アレックスハワンスキー

Lが最後の文字である場合、さらにバイトを節約できます。
魔法のタコUr

抜け穴の悪用。
イスマエルミゲル

2
創造性は主観的であり、計り知れません。この課題の目標は、コードサイズを最小化することであり、これは非ゴルフ言語の最短のエントリです。
アレックスハワンスキー

10

05AB1E、44バイト

これは楽しいものでした。
時間があれば、もう一度戻ってゴルフをする必要があるように感じます。

CP-1252エンコードを使用します。carusocomputing's answerに
触発されました

エコイ

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

オンラインでお試しください!

説明

‘ÓÑOIHH‘文字列をプッシュします"ECOOIHH"

SðýJ3×S文字列をスペースで結合し、3回繰り返してリストに変換します。
結果のリストは['E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H']です。

•Td<UÕ‘áÓ?¢tWvkÔÚ•番号をプッシュします564631055513119191317171314619131717500

S)ø リストと番号を一緒に圧縮します。

ü×Jペアワイズ文字列の繰り返しを行い、それらを結合します。
結果は文字列EEEEE CCCC OOO IIIII H HE C O O I H HEEEE C O O I HHHHHです。

3äû»これを3つの部分に分割し、最初と2番目の部分を逆の順序で追加し、改行で結合します。


13
•Td<UÕ‘áÓ?¢tWvkÔÚ•番号をプッシュし564631055513119191317171314619131717500、なぜそれではないだろうので、」...
geisterfurz007

3
@ geisterfurz007:より正確には、ベース10の数値のベース214表現です:)
エミグナ

それで、潜在的にあなたがより高いベースに行くことができるならば、あなたのストリングはより短くなるでしょうか?
geisterfurz007

@ geisterfurz007:はい、できれば。残念ながら、05AB1Eでは214が最大です。
エミグナ

3
あなたはゼリーを倒すことができる、私はあなたを信じています。残り3バイトです。
魔法のタコUr

9

JavaScript(ES6)、96バイト(DIOCL)

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

ここでのアイデアは、中央の3行を同一にするだけでなく、最初の行を最後の行とほぼ同一にすることです。この説明CDIOに完全に適合する文字は4文字Lしかないため、文字列の最後に4文字を追加するだけでよいため、次に最適なオプションです。

Florentの回答と同様に、これは結果を返すスニペットです。関数である必要がある場合は、3バイトを追加します。

テストスニペット


D最初に置くことでバイトを節約できます。
ニール

@ニールありがとう。私は移動していたC過去をIO同様
ETHproductions

ああ、そうですね、同じ理由で、バッチソリューションを向上させることはできますが、のI直後にを持つことはできませんC
ニール

9

Bash + coreutilsとfiglet、55440ソリューション、各112 106バイト

 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

出力:

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

ねえ、すでにアスキーアートのプログラムがあります!バナーそれは7x7の文字を出力以外のフォントはほとんど、仕事をしていません。うーん、3列目と5列目、2行目と5行目を削除して、その結果を見てみましょう...

多くの文字が必要な方法、つまりBDEFHJLPTU Zで出力されることがわかります。

正しい結果を得るには、最初のsetコマンドの引数をこれらの文字の任意の組み合わせで置き換えるだけで十分です!したがって、これにより11 * 10 * 9 * 8 * 7 = 55440のソリューションが得られ、各ソリューションの長さは106バイトです。


1
読み取り時に私が最初に考えた課題は、「1はこの問題を解決するためにFigletによるを使用しなければならない」だった
FliiFe

6

05AB1E102 90 89 69バイト(EOIXC)

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

オンラインでお試しください!

出力(230バイト):

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%圧縮

説明:

理論は、上下対称の文字を選び、最初の3行をエンコードして回文化することでした。基本的に、2バイトのペアで{Letter}の{#}としてエンコードしました。これを行うためのより良い方法があると確信しています。

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

Emignaのおかげで-20バイト、私はすぐにいくつかの質問をするためにチャットにいます;)。


1
文字列をに置き換えると、19バイトを節約できます•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚîòvÅr葾)jM•34B2ð:。エンコードについて質問がある場合は、05AB1Eチャットに参加してください。
エミグナ

1
また、45ôすることができます
エミグナ

@Emigna Aは上下対称ではなく、どちらも対称ではありませんF。使用を開始するGかそれ以上になると、あなたが話していることを台無しにしてしまうと思いますか?また、圧縮方法では、行ごとに複数回出現する文字を避けたいと考えました。あなたがその解決策をゴルフして私を打ち負かしたいなら、私は例を歓迎します:)。
魔法のタコUr

あります0O(右側、中央列)
ETHproductionsは、

1
•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚúNÏŒº9¨gÚSÞ•O同じバイト数で修正します。
エミグナ

5

JavaScript ES6、168バイト、CHAMP

私たちは男を見るのをやめることができます、私たちはCHAMPここにあります

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バイト

やり直しの改善:

これにより、テープの最適化が改善され、印刷文字のセットアップ文字が犠牲になります。このテープは'C' 'E' ' ' 'F' 'I' 'L' '\n'、効率が向上するように見えます。必要以上にキャラクターとスペースを行き来する必要がないように、内部スペースが不足しているため、これらを選択しました

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

それが何をしているのかを読みたい場合:

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

出力:

 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

以前の提出:

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

ABCDEを使用することを選択したのは、出力用のテープのセットアップがはるかに簡単になるためですが、A、B、D内のすべてのネガティブスペースと、テープの最後のエンドラインがちょっと私を殺したと思う。

私はテープに値が入って0 0 'A' 'B' 'C' 'D' 'E' ' ' \nしまい、そこから出力されました

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

出力:

 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

[<]>6バイトを節約するために3回使用できます。
ジョーキング

5

Vim、116バイト 99バイト

ELITC

@DrMcMoylexの助けを借りて100未満でゴルフをしました。

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

これには印刷できない文字が含まれているので、それらを以下に追加しました(Vimスタイル)。

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

TryItOnline!

基本的に、ゼリーの回答と同じランレングスデコードを使用します。私は、できれば上を下に繰り返すことができる文字を使用しましたが、中央はすべて同じになります。トップ、ボトム、ミドルが作成されたら、キャラクターを編集して修正します。

  1. Iに2つのスペースを追加します(詳細は以下を参照)
  2. Tに2つのスペースを追加します
  3. Eのバーを追加します
  4. Lの上部を削除します
  5. Tの下部を削除します(2つのスペースを削除します)。

Iに2つのスペースを追加する必要があります。2桁の数字を許可しなかったためです(したがって、セパレーターは不要です。これにより、11が必要な9スペースが実行されます。


PPCGへの素晴らしい回答:)。
魔法のタコUr

私はほとんどVimの回答を求めていました。
ゾルタンシュミット

2
私はいつもvimに賛成です。:)私が見るいくつかの改善。1)代替コマンドに末尾のスラッシュは必要ありません。2)いくつかの便利な同義語:のY代わりにVy、のFI代わりに?I<cr>、の{代わりにgg、のw代わりに、の代わりにfl。3)のr代わりにを使用する場合R、を削除できます<esc>
DJMcMayhem

5

MATL、49バイト

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

オンラインでお試しください!

これにより、文字が生成されます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

説明

Tゼロから構築するのは比較的簡単です。I本質的に、Tその垂直反射に加えて取得できます。HされるI転置。NあるZ転置と垂直方向に反射し。

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


3

Perl、109バイト(ABCDE)

:これには、ここではテストしやすいようにエスケープされた印刷できない文字が含まれてい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

文字位置のバイナリ表現を数値として格納し、ルックアップを使用して、0sをスペースに置き換え、1sを対応する文字に置き換えて、バイナリに戻します。文字表現を保存することは非常に簡単ですが、それらを置き換えることは私が期待していたよりも難しいことがわかりました。私はこれを行うためのより良い方法があると確信しているので、私はこれで遊び続けるでしょう。

ファイルを再作成するにxxd -r > favourite-letter.plは、以下を実行し、貼り付けて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

使用法

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バイト

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

私の他の答えに似ていますが、より良い文字の選択肢があります。これを出力します:

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バイト(CKYTF)

ソース

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

出力

  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

オンラインでお試しください!

重要な場合には、出力の各行の先頭にスペースがあることに注意してください。ルールはそれを明示的に禁止していませんでしたので、それでいいのです。そうでない場合は、これを競合しないエントリと見なしてください。

説明

単語の文字は、25個の整数の単純なシーケンスとしてエンコードされ、各整数は5ピクセルのバイナリ表現です。Befungeでは、9を超える整数をインスタンス化する計算を実行する必要があるため、必要な計算数を最小限に抑えるために文字が選択され、潜在的な繰り返し値が再計算ではなく複製されるように順序付けられました。

また、32オフセットされた各文字のASCII値を、デクリメントインデックスのモジュロ5でインデックス付けされた配列に格納する必要があります(したがって、0 4 3 2 1 ...になります)。32でオフセットする理由は、値をピクセルビット(1または0)で乗算し、32に加算してスペースまたは必要な文字を生成できるようにするためです。

この文字値の配列は、コードの最初の5バイトに格納されているため、簡単にアクセスできます。これは、文字の選択にも影響します。これらの値は、コードシーケンスとして解釈される場合に意味がある必要があるためです。これがシーケンス#&49+です。#以上のジャンプ&49+ちょうどその後に無視され、スタックに13をプッシュ。


あなたは整数入力を求めて&いますが、プログラムは実際に入力を取りません...何が起こっていますか?
ブライアングラディン

その文字は '#'によってスキップされます
-12Me21

@ 12Me21最後の段落でその背後にある理由を説明しました。
ジェームズホルダーネス

3

Ruby、110 107 102バイト(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

プリント

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

編集:join物事を避けたり動かしたりして、いくつかの文字を保存しました


3

Befunge-98109 98バイト(FUNGE / ANY)

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

オンラインでお試しください!

入力(115文字):

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

入力フォーマットとバイナリ数の整数バージョンで印刷する文字の逆マップである(例えば、Nの2行目であるので、マスクがある)、及び印刷するASCII文字は、マイナス32 。aaaaabbbbbbaaaaaNN N10011bbbbbb

また、入力を作成するためにbefunge-98プログラムを作成しました。

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

オンラインでお試しください!

出力(255文字):

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%圧縮

説明:

: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

これはおそらくかなりゴルフに適しています。削減の可能性について考えることはほとんどありませんでした。

理論的には、これは5x5のアスキーアートの任意のシーケンスを印刷できます。

3桁の数字から抜け出すのを助けてくれたJames Holdernessに感謝します!


さらにアイデアを取るために、48*置き換えることができます' (これはすべての後に98あるので)、そして88*と交換することができます'@。三桁から抜け出すのを手伝ってくれてありがとう!
ブライアングラディン

3

C#の、290 279 267 265のバイト

編集:@milkのおかげで12バイトを節約しました!@TheLethalCoderにさらに2つの感謝

ゴルフ:

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

ゴルフをしていない:

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

出力:

 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コードが290279バイトの長さだと思った瞬間がありました。
スティーブンH.

1
@stevenH。それはそのように感じますC#でのゴルフ:)
ピートアーデン

このようなローカル関数を定義する場合、-12バイトFunc<string,string>j=a=>a.Replace("|",g)+"\r\n";
ミルク

@milk Cool、ありがとう!:)
ピートアーデン

\ r \ nに\ rが必要ですか?2バイトを節約します
TheLethalCoder

3

スタックス、33 バイト「BCDEO」

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

実行してデバッグする

私はその手紙を選んだ

  • 上下対称
  • 中央の3列が同一

これらのプロパティは、各文字を3x3グリッドで表すことができることを意味します。数字で表された9つの領域があります。

12223
45556
78889
45556
12223

文字「B」を検討してください。3桁の8進数で表すことができます656。各数字には3ビットが含まれており、その文字に対してどの領域を有効にするかを制御します。この手法は「CDEO」でも機能します。

解凍、コメントなし、コメント付きで、プログラムは次のようになります。

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

これを実行する


2

Python 3、234 228 227 166バイト(クラウド):

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

プリント:

 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バイト

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)

勝ちませんが、圧縮は使用しません。これになります:

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

どんな助けでも歓迎です、私はおそらく何かを見逃しました。Python 2を使用できませんでしたp=printrepl.itで試してください。


2
そのFはどうなっていますか?
破壊可能なレモン

@DestructibleWatermelonどうやってそれを見逃したのかわかりませんが、今は修正されています。
nedla2004

元のサイズを下回るゴルフ:160バイト、Python 2
CalculatorFeline

使用する代わりに、kw引数を指定しp=printた単一のprintステートメントを使用できますsep='\n'
ルカシティ

2

Ruby、101バイト(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

各行に1ブロックの文字(1、4または5文字)が必要な文字を選びました。F、L、およびEは左揃えですが、TおよびIには、単一の文字(垂直部分)が印刷される先頭スペースが必要です。これらのスペースを追加するためのコードは、改善できるように見えます。

食べない

"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バイト

暗黙的なintが許可されている場合、さらに8バイトを切り捨てることができます。

#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

出力: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     

仕組み:マクロRは、コードを5回繰り返します。この問題で5が現れる頻度を考えると、非常に便利です。さて、T(int)が行うことは次のとおりです。Tは整数を受け取り、それをビットフィールドとして使用して、文字を印刷する場所と空白を印刷する場所を決定します。たとえば、指定された場合T(0b11111111100111111110011100)、次を出力しますEEEEE DDDD CCCC BBBB AAA。どの文字を印刷するかを徐々にカウントダウンします。最初にE、D、C、B、Aの順に印刷します。f()を呼び出すと、すべてが印刷されます。


2

バッチ、135バイト(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

注:最初の行は5つのスペースで終わります。


2

BASH、 95、111バイト(EBASH)

ゴルフ

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

説明

Base 64 over raw LZMAバイトストリーム

デモ

>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

免責事項

はい、私はこれが実際には移植性がないことをよく知っています。そのため、最初のケースで-qを使用して xz警告を抑制するために1バイトを支払いました。


2

Python 2、208 194 193バイト

これは私の初めてのコードゴルフです;)

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

出力:

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

辞書を使用すると、文字の並べ替え順序が破棄されますが、それは要件ではありませんでした


左上隅を使用しない文字を使用すると、-4になります。これにより、16進数で1桁少なくなる24ビット(25ビットではなく)の数値になります。
プリアディアン

2

perl 94バイト。

最初の4つの文字は(DOIC)、具体的に同様の上下のラインを有するように選択され、そして中間のものに類似しています。他の同様の文字はないので、同じアルゴリズムを適用し、欠落している4Lを追加できるように「L」を選択しました。

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

\nコード内を実際の新しい行に置き換えることで、余分なバイトを節約しました。

結果:

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.