Stack Exchangeファビコンを印刷する


19

チャレンジ

以下に示すように、Stack Exchangeファビコンを印刷または返却します。

 ___________________
/                   \
---------------------
|                   |
---------------------
|                   |
---------------------
\__________    _____/
           |  /
           | /
           |/

これはであるため、各言語の最短の回答が優先されます。


2
左上隅がわずかにずれていることを意図していますか?
ETHproductions

@ETHproductionsそれ意図されていましたが、私は今それを変えています。どちらかといえば気まずい感じがします。
musicman523

2
実際の出力は、参照用に219バイトです。
完全に人間の

行の末尾の行および/または末尾のスペースは許可されますか?
-dzaima

回答:


43

Operation Flashpointスクリプト言語、263 195バイト

f={r="                   ";t="---------------------\n";s=" ___________________\n/"+r+"\\n"+t+"|"+r+"|\n"+t+"|"+r+"|\n"+t+"\__________    _____/\n           |  /\n           | /\n           |/";s}

仕事に適したツールではありません。

で呼び出す:

hint call f;

出力:

フォントは等幅ではないため、フォーマットは失敗します。


49
あなたが挑戦を見て、「ああ、私はそれをOperation Flashpointで答えるべきだ」と思うのは、私を困惑させます
...-完全に人間

7
@totallyhumanスクリプト言語は書くのが楽しいだけだと思います。いくつかの癖と制限があるので、時々奇妙な回避策を使用する必要があります。
-Steadybox

5
答えをハードコーディングすると、おそらくより良いスコアが得られます。
-NieDzejkob

2
@NieDzejkobこれは、単に出力をハードコーディングするよりも短いですが、以前のバージョンよりも退屈です。
-Steadybox

@totallyhumanそして、特にこの課題では、言語がコルモゴロフ複雑さの課題にどのように対応するかをテストしたかったです(これは理想にはほど遠いです)。
Steadybox

11

38 37 33 30バイト

←×_χ↓F/||⟦ι¹¹⟧\×_⁹‖B_×ψ⁴↙↙³↑↑³

オンラインでお試しください!リンクは、コードの詳細バージョンです。編集:リフレクションの助けを借りてバイトを保存することができましたが、@ CarlosAlejoは実際にはリフレクトなしで37バイトで実行できることを示しています。左の¾を描画し、最後の¼を反映することにより、さらに4バイトを保存しました。編集:以前の33バイトの回答ReflectButterflyOverlap()は、リフレクションでオーバーラップ領域をオーバープリントしないことに依存していたため、この動作が変更された場合、それに依存しないソリューションを探しましたが、結果は私のおかげでより短いことが判明しました配列の印刷の創造的な使用。説明:

←×_χ                            Print 10 `_`s leftwards (top row)
    ↓                           Move down to the next row
     F/||                       For each character in the string `/||`
          ι                     Current character
           ¹¹                   Integer 11, prints as `-----------`
         ⟦   ⟧                  Put both into an array
                                Implicitly print on separate lines
              \                 Implicitly print `\`
               ×_⁹              Implicitly print 9 `_`s
                  ‖B            Reflect right, overlapping the axis
                    _           Implicitly print `_`
                     ×ψ⁴        Implicitly delete 4 characters
                        ↙↙³     Move down left and print three `/`s
                           ↑↑³  Move up and print three '|'s

2
とてもよくやった。この質問に対する4つの炭の答えがあるのが大好きです!‖BO前回使用したときは言語ではありませんでした。今後もそのことを念頭に置いておく必要があります。
DLosc

「最後の¼を反映する」ということの意味を自分で確かめなければなりませんでした。確かによくやった!
チャーリー

8

///、98バイト

/'/  //&/
"""
|!! |//%/\\\/
!'|//#/_____//"/-------//!/'''' / ###____
\/!! \\&&
"""
\\##''#%'% %\/

オンラインでお試しください!または、インタラクティブご覧ください!


3
///プログラムのさまざまな「ステップ」を確認できるユーティリティはありますか?(各置換後の部分的な実行。)それはそれらをよりよく理解するのに役立ちます。
CAD97

@ CAD97私はオンラインインタープリターをいじっていましたが、通常はデバッグオプションが付属していましたが、オンラインインタープリターが引数を順序付ける方法は機能しません。あなたは自分で通訳のコピーをつかみ、のようなことをすることができましたperl slashes.pl -d1 code.txt。現在///のオンライン実行環境で作業していますが、それには時間がかかる場合があります。
コナーオブライエン

3
@ CAD97オンラインのことを言ったので、見てください!
コナーオブライエン

8

JavaScript(ES6)、113 112バイト

(@Craig Ayreのおかげで1バイト節約できました。)

let f=

_=>` _19
/ 19\\
-21
| 19|
-21
| 19|
-21
\\_10 4_5/
 11| 2/
 11| /
 11|/`.replace(/.(\d+)/g,([a],b)=>a.repeat(b))
 
 console.log(f());


交換機能の前に空きスペースがあるようです。JSソリューションの同様の更新を113バイトで思いついたばかりです。私はそれを投稿するべきか、それを手に入れるべきかわからない
シャギー

ああ、待って、私が私の投稿する前にあなたがあなたの解決策を投稿したのを見てください。私がコンピュータに着いたら、私は私のものを削除しreplace(/.(\d+)/g,(a,b)=>a[0].repeat(b))ます。あなたはでバイトを保存できます。
シャギー

ありがとう、シャギー。このタイプの回答を自動化するプログラムを作成しましたが、不要なスペースを出力するのはばかげていました。あなたの提案されたreplace声明は確かに改善であり、私はこれを私のプログラムに取り入れました。
リックヒッチコック

1
あなたはバイト配列のマッチングを保存することができますかa([a],b)=>a.repeat(b))
クレイグ・アイレ

はい、ありがとう!私はその構文に不慣れでした。
リックヒッチコック

7

SOGL V0.1232の 31 バイト

^$∙r↑Ψ«2τγæΕž‘╬Æ╬⁷"ƧΡ⅟?0Ξ³‘6«8ž

ここで試してみてください!

説明:

...‘               push a quarter of the icon
    Β             palindromize vertically
      ╬⁷           palindromize horizontally (these two should be ╬3 together, but spacing doesn't work correctly (though now it does since I fixed it))
        "...‘      push the extention
             6«8ž  at coordinates [12; 8] in the quad-palindromized image put that in

四半期:

 __________
/
-----------
|
-----------

その他の部分:

    
|  /
| /
|/

「一緒」?"トラフ"?また、.説明で意味することを理解するのに少し時間がかかりましたstring。たぶん使用^...'"...'ますか?
電卓

@CalculatorFeline私は通常...、圧縮された文字列(別名ナンセンス)を使用していましたが、最近1つまたは2つを開始しました。そして、私の間違いや文法を自由に修正してください:p
dzaima

7

Python 2、115バイト、より創造的なアイデア

t,u,v,w,x,y,z='\n -/\\_|';k=w+t+11*u+z;i=t+21*v+t
print u+19*y+t+w+19*u+x+(i+z+19*u+z)*2+i+x+10*y+4*u+5*y+k+u,k,k+w

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

Python 2、102バイト、退屈なアイデア

print'eNrjUojHBFz6CpgghksXG+CqwaK2hgpqYxDuASkDM/S5kDUqKKDxUbn6XADUmClx'.decode('base64').decode('zip')

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


2
この方法が何度も使われているのを見たので、私はこれに賛成票を投じています。何度も何度も見るのは退屈です。
R. Kap

8
@ R.Kapより短い方法がない限り、それはダウンボートするかなりarbitrary意的な理由です。
デニス

1
@デニスかもしれませんが、私はまだ私の意見を支持し、それを表現するすべての権利を持っています。私はこの方法がこれらの種類の課題で数え切れないほど使用されるのを見てきましたが、それはOPの側でほとんどまたはまったく創造性を必要としません。 。
R. Kap

2
@ R.Kap汎用の圧縮アルゴリズムが手動のアルゴリズムを簡単に打ち負かすことができる場合、それは答えではなく挑戦の問題です。JellyでBubblegumを倒すことすらできず、Jellyでの圧縮解除のオーバーヘッドはほとんどありませんでした。
デニス

2
@Dennisここでコードの長さについても話していません。私は努力と創造性について話しているが、この答えは、私の意見では、これ以上多くのことができる言語では説明できないため、私は投票しなかった。今、あなたが私の推論に同意しない場合、それは結構です。その場合は、この会話が長くなりすぎる前にここでこの意見交換に反対し、終了することに同意します。:)
R. Kap


6

C(gcc)、187バイト

Cody Grayのおかげで2バイト、Keyu Ganのおかげで3バイト節約されました!

#define a"         "
#define s a" "a
#define l"\n---------------------\n"
f(){puts(" ___________________\n/"s"\\"l"|"s"|"l"|"s"|"l"\\__________    _____/\n"a"  |  /\n"a"  | /\n"a"  |/");}

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


2
puts末尾の改行が許容される場合、それは非常に短くなります。
コーディグレー

f()代わりに使用できますmain()。関数も使用できます。
キーガン

5

さび、181バイト

||" ___________________
/2\\
1
1
3
\\__________    _____/
4|  /
4| /
4|/".replace("1","3
|2|").replace("2",&" ".repeat(19)).replace("3",&"-".repeat(21)).replace("4",&" ".repeat(11))

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

さび、184バイト

このバージョンは、replaceそれぞれのバイト数が少ないほどコストが高くなるため、よりゴルフに適している場合があります。最初replaceのループはループの一部ではありません。これは、二重デューティsをaのString代わりにに変更するため&'static strです。

||{let mut s=" 5__5__5
/2\\
1
1
3
\\55    5/
4|  /
4| /
4|/".replace("1","3
|2|");for p in vec![("2"," ",19),("3","-",21),("4"," ",11),("5","_",5)]{s=s.replace(p.0,&p.1.repeat(p.2))}s}

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


5

C、167バイト

i;char*d=" q    /()\\   A   |()|    A   |()|    A   \\h#c/  #&|!/   #&| /   #&|/",c,b;main(j){while(c=d[i++],b=c%5==2||c>123?c:c>95?95:c>45?45:c>=32?32:++c,i<47)for(j=c;j-->=b;)putchar(b);}

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

注:上記の見かけのスペースの多くは、実際にはタブ文字です。

読み取り可能なバージョン:

i;
char *d = " q   /()\\   A   |()|    A   |()|    A   \\h#c/  #&|!/   #&| /   #&|/", c, b;
main(j) {
    while(
        c = d[i++],
        b = c % 5==2 || c > 123 ? c:
            c > 95 ? 95:
            c > 45 ? 45:
            c >= 32 ? 32:
            ++c,
        i < 47
    )
        for(j = c; j-- >= b;)
            putchar(b);
}

説明:

データ配列dは、回答をリテラルの単一文字とコード化された繰り返し文字でエンコードします。データ配列内の各文字cは、基本文字bと多数の繰り返しにマップされます。その後、何度も印刷されます。

単独で使用される文字(スラッシュとパイプ)にはASCIIコード47、92、および124があります。これらの2つは5で割り切れ、残りは2です。 (c%5=2||c>123)です。3つすべてをテストする短い条件は見つかりませんでした。

ASCIIコード95、45、および32でそれぞれ繰り返される文字(アンダースコア、ダッシュ、およびスペース)は、より高いASCIIコードでコード化されます(繰り返しごとに1つずつ増加します)。したがって、たとえば、単一のスペースは単なるスペースですが、次のASCII文字である感嘆符によって2つのスペースをコーディングできます。コード化された文字が上記のモジュロ条件を満たしているため不適切な場合、11個のスペースを表す#&のように分割できます。同じテクニックを使用して、スペースとダッシュ文字の範囲が重ならないようにします。

最後に、10個の改行はタブとしてエンコードされ、バックスラッシュで改行をエスケープするために費やされたバイトを保存し、印刷のためにインクリメントされます(++c)。


よくやった!より良いCの答えがあることは知っていました。
musicman523

ありがとう!楽しいチャレンジでした。私は4時間ほど費やしたので、最終的にはうまくいきました。
jiv

4

49 37バイト

↓⁵\…_χ↓↓³↗↗³…_⁵↑/↑⁵↖\←…_¹⁹↓ /F³«P²¹¶¶

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

ついにこれを少しゴルフできました。この答えは(他のすべてのチャコールの答えとは異なり)反射を使用しませんが、1回のパスですべての輪郭を描き、最後に水平バーを残します。

詳細バージョンへのリンク。


「他のすべてのチャコールの回答とは異なり」実際、最初の回答ではリフレクションも使用しませんでしたが、左の垂直線で描画を開始することで1バイトのゴルフをする機会を見つけられなかったことは認めます。(ソリューション間のその他の唯一の変更は、Timesを使用したRangeを使用し、1ステップ\だけを印刷した場所を印刷することです:UpLeft。)
Neil

反省は進むべき道までだと思われるが
ニール

また、私のキーが機能しなかったのは今では2回です
ニール

3

バブルガム、40バイト

末尾の改行を削除して1バイトを節約しました、@ ovsに感謝します!

00000000: 5388 c704 5cfa 0a98 2086 4b17 1be0 aac1  S...\... .K.....
00000010: a2b6 860a 6a63 10ee 0129 0333 f4b9 9035  ....jc...).3...5
00000020: 2a28 a0f1 51b9 fa00                      *(..Q...

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


末尾に改行がなければ、これは40バイトを取得します
ovs

ありがとう!私のテキストエディターは自動的に1つを挿入すると思います。
musicman52317

これをどのように作成しましたか?zlib.compress(s.encode(), 9)46バイトを出力し、答えはzlibのようです。
-NieDzejkob

あたり デニスの提案、私が使用zopfli --deflate使用、その後、生の圧縮ストリームを生成するxxdXXDフォーマットに変換します。私はzlibチェックサムを残すか、他の何らかの理由で生のDEFLATEストリームではないと考えています。
musicman523

3

、38バイト

←…_χP↑⁵P\F³«↑P¹¹↑»↗¹…_χ‖BM²¦⁷P↓⁴… ⁴↙↙³

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

私が使用し、元の形式でカルロスの答えをジャンプオフポイントとして、しかし、水平方向の対称性を利用して、リフレクションを使用して良いビットを救いました。(下線が間違った行に配置されたため、垂直対称性は価値がありませんでした。)各ステップでキャンバスの進化を見ることができますここでます

これが冗長バージョンです。


-d各ステップを表示するために使用することができます
ASCIIのみ


3

Python 2、119 117 116バイト

print''.join(' \n-/|\\_'[ord(x)/8-4]*int('1245abjl'[ord(x)%8],36)for x in' V(8&H(7(@&@(7(@&@(7(HT"S8(%@!8(%@ 8(%@8')

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

少し拷問されたランレングスエンコーディング...

編集:長さのセットを置き換えることにより3バイトを保存します。

[1,2,4,5,10,11,19,21][ord(x)%8]

int('1245abjl'[ord(x)%8],36)


うわー!私は自分でこれを行う効果的な方法を考えていました。
GarethPW

素敵なコードですが、119バイトのようです。
mdahmoune

@mdahmoune:ピタッとは-使用することを忘れてしまったr''...長さをチェックするとき
チャス・ブラウン

3

C ++ 11 - 162の 159 154 152 150バイト

MSVC:

void f(){char*i="b t_b\nb/t b\\b\nv-b\nb|t b|b\nv-b\nb|t b|b\nv-b\nb\\k_e f_b/b\nl b|c b/b\nl b|b b/b\nl b|b/";while(*i)cout<<string(*i++-97,*i),i++;}

GCC:(+4文字)

int f(){char*i="b t_b\nb/t b\\b\nv-b\nb|t b|b\nv-b\nb|t b|b\nv-b\nb\\k_e f_b/b\nl b|c b/b\nl b|b b/b\nl b|b/";while(*i){cout<<string(*i-97,*(i+1));i+=2;}}

入力文字列 iは、文字のペアでコーディングされ。

  1. 繰り返す文字の数(読みやすくするために「a」に追加)
  2. 印刷する文字

ここにはまだ改善の余地があると思います。

編集:

  1. putcharをcout <<に置き換えました
  2. whileを削除し、文字列コンストラクターを使用して文字を繰り返します
  3. ポインターと偽のセミコロンの前のスペースを削除しました;;
  4. 命令をコンマで複合し、中括弧を削除します。

C ++ 11はauto戻り型としてサポートしていません。これはC ++ 14の機能です。ただし、戻り値の型を作成することでこれ修正し、バイト保存できますint。ただし、このコードが機能しているようには見えません。オンライン試してみてください!修正できるかどうかを確認しますか?
musicman523

戻り値の型auto-> voidを変更しました。Visual Studio 2017でテストしていました-自動的にC ++ 14。gccのバージョンを追加しました。
ロバートアンドジェジュク

わかった Linuxを実行しているので、VSはありません。良くやった!
musicman523

こんにちはロバート-あなたのランレングスエンコーディングアプローチは、私自身のものと似ています。こちらをご覧ください。さらに、各(length、char)ペアを2ではなく単一のcharにパックします。7つの可能な文字と8つの異なる長さがあります。したがって' '..'X'、エンコードには56文字を使用し ます。これにより、デコード用のオーバーヘッドが少し増え、40バイト節約されます。
チャスブラウン


3

R16K1S60アセンブリ152 144バイト

出力を画面周辺機器R16K1S60にASCIIで書き込みます。ザパウダートーイsave2012356。(情報についてはヘッダーのリンクを参照してください)

プログラムのバイトサイズは、アセンブリではなく、コンパイルされた結果(Cells Used * 2)です。

ロゴがあなたのバイトコードよりも多くのスペースをとるとき、あなたはうまくやったことを知っています。

a:
mov ex, ip
mov ax, .string
mov sp, ip
mov dx, 0x1000
send sp, dx
.loop:
mov bx, [ax]
cmp bx, ip
je .end
cmp bx, ip
je .newline

shr bx, cx, 8
and cx, 0x00FF
.inner:
send sp, cx
sub bx, ex
jnz .inner
.reentry:
add ax, ex
jmp .loop
.newline:
add dx, 0x0020
send sp, dx
jmp .reentry
.string:
dw 0x0120
dw 0x135F
dw 0x000C
dw 0x012F
dw 0x1320
dw 0x015C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x017C
dw 0x1320
dw 0x017C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x017C
dw 0x1320
dw 0x017C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x015C
dw 0x0A5F
dw 0x0420
dw 0x055F
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x0220
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x0120
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x012F
dw 0x0009
.end:
hlt

説明

上記のアセンブリコードは、単純な圧縮アルゴリズムを実装しています。ワード0x000Cは改行で、0x0009は実行を停止するコマンドです。

他の単語は、次のように単純にエンコードされます:0xTTCC

  • T:値を繰り返す時間

  • C:印刷するASCII文字

ASMは、使用頻度の低いレジスタを含む、使用可能なすべてのレジスタを使用します。

  • いくつかのバイトを節約するために、いくつかの既知の値をクイックリコールに取り込む命令ポインター

  • スタックポインターは、コードがスタックを使用しないため、6番目の汎用レジスターとして使用されます。

重要なデータには、実際にはAX、BX、CX、およびDXのみが使用されます。EXとSPは、頻繁に使用されるいくつかの定数を格納するために使用されます。

それはいくぶんシンプルで、勝つチャンスはありませんが、書くのは楽しかったです!

古い回答の改訂履歴を参照してください(ASMに関しても同じくらい大きいです)

funfact:これが単語で測定された場合(R16K1S60、16ビットの場合)、72バイトで、pyth回答よりも小さくなります




2

Mathematica、163バイト

Row@Map[Column,Characters/@{" /-|-|-\\   ",r="_ - - -_   ",r,r,r,r,r,r,r,r,r,"_ - - - |||","_ - - -   /","_ - - -  / ","_ - - - /  ",r,r,r,r,r," \\-|-|-/   "},{1}]


2

Python 2、171バイト

p,u,q,v,r,s,F=' ','_','/','|','-'*21,'\\',lambda f,m:f+m*19+f;B=lambda n:p*11+v+p*n+q
print'\n'.join([F(p,u),q+p*19+s,r,F(v,p),r,F(v,p),r,s+u*10+p*4+u*5+q,B(2),B(1),B(0)])

各行は正確に85バイトです!フーラ!


2

Zsh、244バイト

これは、Bashではなく、Zsh用に特別に書かれています。奇妙な構文の観点からもう少し許可されているからです。

alias p=printf
function r { p "$1%.s" {0..$2}}
function l { p $1;r $2 19;p $3;p "\n"}
l " " _ " "
l / " " \\
l - - -
l \| " " \|
l - - -
l \| " " \|
l - - -
p \\
r _ 10
r " " 4
r _ 5
p "/\n"
r " " 11
p "|  /\n"
r " " 11
p "| /\n"
r " " 11
p \|/

注:tio.runで実行しようとすると、出力は端末とは異なります。これに対する修正は置き換えです

function r { p "$1%.s" {0..$2}}

function r { p "$1%.0s" {0..$2}}

245バイトになります(link)。

Edit Seems like I was too eager to hit that post button and I missed some spaces, making my solution a bit less efficient. My new output seems off though, but I think I counted correctly (but it wouldn't change the length anyway).


Welcome to PPCG! Notice that the lower line of underscores has a gap of four spaces in it, which is missing from the output of your code.
Steadybox

@Steadybox Ohh silly me. I've updated the answer, thanks for pointing it out!
Luca_Scorpion

No problem! Unfortunately, I think it's still a bit off, but this should fix it (and it saves you a byte too!).
Steadybox

I think you can save a few bytes by using 'funcname(){}' instead of 'function funcname{}'
Winny


2

Python 2, 159 153 139 bytes

s=" "*19;e="-"*21;a=" "*9;print" %s\n/%s\\\n%s\n|%s|\n%s\n|%s|\n%s\n\%s    %s/\n%s|  /\n%s| /\n%s|/"%("_"*19,s,e,s,e,s,e,"_"*8,"_"*7,a,a,a)

Try it online!

EDIT: Saved 6 bytes by using % formatting instead of .format().
EDIT: Saved another 14 bytes by fixing the output, thanks to musicman523.


1
This isn't printing the exact text (extra lines are present). Fixing this will probably save some bytes as well.
officialaimm

Here is a fixed version, coming in at a hot 139 bytes
musicman523


1

JavaScript (ES6), 151 bytes

_=>` 2_________
/0\\
1
|0|
1
|0|
1
\\2    _____/
3|  /
3| /
3|/`.replace(/\d/g,a=>a.repeat.call(...[[" ",19],["-",21],["_",10],[" ",11]][a]))

Test Snippet

f=
_=>` 2_________
/0\\
1
|0|
1
|0|
1
\\2    _____/
3|  /
3| /
3|/`.replace(/\d/g,a=>a.repeat.call(...[[" ",19],["-",21],["_",10],[" ",11]][a]))

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



1

Charcoal, 48 bytes

↙¹→P¹¹↓↓¹P¹¹‖B↓¦↘→×¹⁰_M⁷↑←←×¹⁰_‖BJ¹¹¦⁶→×⁴ ↙↙³↑↑³

Try it online!

Somewhat different internals than Carlos's, although not visible at first.


1

,,,, 115 101 98 bytes

I am absolutely ashamed that this is the best I can produce. >.>

"|/
"' 11×:"| /
"⇆:"|  /
"⇆'
'/'_5×' 4×'_10×92c'
'|' 19×'|'
'-21×+++++3×110⇆⊣"\
"' 19×'/'
'_19×' #
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.