HyperNeutrinoのベンゼンヘキサゴンアイコンをASCIIで描く


31

祭典でHyperNeutrinoは、自分のアカウントと担当者を取り戻す氏Xcoder以下

ハイパーニュートリノの才能

描画性のために画像を回転させることをおologiesびします。


このASCIIアートを正確に印刷または出力します。末尾にスペースや末尾の改行がある場合があります。

      _______________
     /               \
    /  /           \  \
   /  /             \  \
  /  /               \  \
 /  /                 \  \
/  /                   \  \
\                         /
 \                       /
  \                     /
   \                   /
    \  _____________  /
     \_______________/

これは、分子ベンゼンの 2つの共鳴構造の1つを示しています ここに画像の説明を入力してください

関連:同心六角形アスタリスクで満たされた六角形

リーダーボード:


8
@HyperNeutrinoはそれ以降、この質問に合わせてアイコンを回転させています。
ニール

5
@Neilはい:Pそれは私を悩ませ、一貫性を保つために変更しました。次に、共鳴構造を更新する必要があります。xnor:P
HyperNeutrino

1
くそー、私は最後にランダムな未使用のパラメーターを追加し、StackOverflowに変更し、元に戻し、10回のように別のものを編集しても、フレアは更新されません:I
HyperNeutrino

4
しかし、私の意見では、横向きのバージョンは私のプロファイルにレンダリングするとwhenいように見えます。私はそれに慣れていないだけかもしれません。そこで、元に戻しました。:P
ハイパーニュートリノ

:(見たかった!
CalculatorFeline

回答:



8

JavaScript(ES6)、 144  143 140 138 134バイト

純粋な条件式を使用して、文字ごとに出力文字を描画する再帰関数。

f=(p=363)=>(m=p%28-14,x=m<0?-m:m,y=p/28|0,p--)?`\\/ _
`[m+14?x<8-y&y<2|x<8&y>11?3:x==y+8|x==19-y|x==16-y&y>5&x>5?m<0^y>5:2:4]+f(p):''

どうやって?

0 <p≤363の各位置に対して、次を定義します。

  • m =(p MOD 28)-14
  • x = | m |
  • y =⌊p / 28⌋

以下は、から適切な文字を選択する式の内訳です[ '\', '/', ' ', '_', '\n' ]

m + 14 ?                            // if this is not an end of line:
  x < 8 - y & y < 2 |               //   if this is either part D
  x < 8 & y > 11 ?                  //   or part E:
    3                               //     output '_'
  :                                 //   else:
    x == y + 8 |                    //     if this is either part A
    x == 19 - y |                   //     or part B
    x == 16 - y & y > 5 & x > 5 ?   //     or part C:
      m < 0 ^ y > 5                 //       output '/' or '\' depending on the quadrant
    :                               //     else:
      2                             //       output a space
:                                   // else:
  4                                 //   output a Line-Feed

以下は、上記で定義した座標系のさまざまな部分です。

   | 13 12 11 10 09 08 07 06 05 04 03 02 01 00 01 02 03 04 05 06 07 08 09 10 11 12 13
---+---------------------------------------------------------------------------------
12 | .  .  .  .  .  .  E  E  E  E  E  E  E  E  E  E  E  E  E  E  E  .  .  .  .  .  .
11 | .  .  .  .  .  B  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  B  .  .  .  .  .
10 | .  .  .  .  B  .  .  C  .  .  .  .  .  .  .  .  .  .  .  C  .  .  B  .  .  .  .
09 | .  .  .  B  .  .  C  .  .  .  .  .  .  .  .  .  .  .  .  .  C  .  .  B  .  .  .
08 | .  .  B  .  .  C  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  C  .  .  B  .  .
07 | .  B  .  .  C  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  C  .  .  B  .
06 | B  .  .  C  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  C  .  .  B
05 | A  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  A
04 | .  A  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  A  .
03 | .  .  A  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  A  .  .
02 | .  .  .  A  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  A  .  .  .
01 | .  .  .  .  A  .  .  D  D  D  D  D  D  D  D  D  D  D  D  D  .  .  A  .  .  .  .
00 | .  .  .  .  .  A  D  D  D  D  D  D  D  D  D  D  D  D  D  D  D  A  .  .  .  .  .

デモ


7

05AB1E、50バイト

•ι¡≠ït]4uƵŽΣ”9g½ùöèri|)á,ćè’∍é•5B3ÝJ"/ _\"‡4¡.B».∞

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


圧縮:

ここでの戦略は、オブジェクトの半分を作成してから、中間点で画像をミラーリングすることでした。これを行うために、私は最初に左半分をフロントパディングで構築しました:

11111122222222
111110
11110110
1110110
110110
10110
0110
3
13
113
1113
1111311222222
11111322222222

ただし、右詰めはありません。これは.B、05AB1E の関数を使用して、スペースを使用してすべての要素の長さを等しくできるためです。これにより、右側の余分なスペースを省略し、改行で区切ることができます。次に、このパターン4を取得し、それらを置き換えるすべての改行を削除して取得しました:

1111112222222241111104111101104111011041101104101104011043413411341113411113112222222411111322222222

これをbase-255で圧縮すると、次のようになります。

•ι¡≠ït]4uƵŽΣ”9g½ùöèri|)á,ćè’∍é•5B

2つはbase-255圧縮文字列を示し、5Bはそれをbase-5に変換します。


圧縮後の2番目の部分:

3ÝJ                # Push '0123'.
   "/ _\"          # Push '/ _\'.
         ‡         # Replace each in b with a on c.
          4¡       # Split on 4's (the newlines I replaced).
            .B     # Boxify for the mirror (adds padding to longest element).
              »    # Join by newlines. 
               .∞  # Mirror image.


@emigna è、もちろん!
魔法のタコUr

5

V、61バイト

i/  /±¹ \  \
\²µ /6ñGÙlxxhPHÄãxx>ñv$r_jwr w.Gkkl13r_jviwr_jd

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

Hexdump:

00000000: 692f 2020 2fb1 b920 5c20 205c 0a5c b2b5  i/  /.. \  \.\..
00000010: 202f 1b36 f147 d96c 7878 6850 48c4 e378   /.6.G.lxxhPH..x
00000020: 783e f176 2472 5f6a 7772 2077 2e47 6b6b  x>.v$r_jwr w.Gkk
00000030: 6c31 3372 5f6a 7669 7772 5f6a 64         l13r_jviwr_jd

5

パイソン2226 213バイト 179のバイト

私の最初のゴルフ!

b,f,s,u='\/ _'
print'\n'.join([s*6+u*15,s*5+f+s*15+b]+[s*(4-n)+'/ /'+s*(13+2*n)+'\ \\'for n in range(5)]+[s*n+b+s*(25-2*n)+f for n in 0,1,2,3]+[s*4+b+s*2+u*13+s*2+f,s*5+b+u*15+f])

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

パターンを見つけることができるビットをループして、残りをハードコーディングしました。異なる文字を変数に設定すると、かなり多くのバイトを節約できました。

編集:複数回結合する代わりに同じ配列に追加することにしました。13バイトを保存しました。

編集2:@ ValueInk、@ jacoblaw、@ WheatWizard、@ CalculatorFeline、および@ Challenger5に感謝、34バイト節約


1
b,f,s,u='\/ _';o,a='/ /','\ \\'現在の変数の初期化で11バイト節約できます!こちらをご覧ください
バリューインク

1
@ValueInkのヒントを使用し、4行にわたってリストを作成しない場合、このような195バイトがあります
-jacoblaw

1
@jacoblawその中のすべてのスペースは必要ありません。ここではそれらがありません。
小麦ウィザード

1
oそしてa、コードで一度だけ使用されます。ここでは、インライン化されています。
電卓

1
0,1,2,3代わりにrange(4)を使用して、バイトを保存できます。
エソランジングフルーツ

4

J、155バイト

('_ /\',LF){~5#.inv 95x#.32-~3 u:'0_C5NcBe''e2kA/jhk>5y~l<Z:AN<QG)V7m>l"x!@A-jp8E%XEh&"$''j(sP8Z!b#e7})]_,L"LCUu)kqsBQ5_5bt}`bq ":1cv(gU;|{I~n5q@(ISCK `'[<

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

これは、入力を必要としない関数です。例えば、f =: <code>その後f ''

説明

次の手順を使用してこれをエンコードしました。目的の圧縮文字列が変数に含まれていると仮定しますh

   k=:'_ /\',LF                    NB. the dictionary used to encode the string
   k i. h                          NB. numbers corresponding to indices in `k`
1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 4 1 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 3 1 1 3 4 1 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 3 4 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 3 4 1 2 1 1 2 1 1 1 ...
   5x#.k i. h                      NB. base 5 to decimal
4571656960356964266407389291886526966074643634545109498506871241033015964671946641835339522170115810676380078148856766959449166714046433431522704650346045752930168245684048485736756807881102718244115576453623363843561553955078139
   95#.inv 5x#.k i. h              NB. decimal to base 95
16 63 35 21 46 67 34 69 7 69 18 75 33 15 74 72 75 30 21 89 94 76 28 58 26 33 46 28 49 39 9 54 23 77 30 76 2 88 1 32 33 13 74 80 24 37 5 56 37 72 6 2 4 7 74 8 83 48 24 58 1 66 3 69 23 93 9 61 63 12 44 2 44 35 53 85 9 75 81 83 34 49 21 63 21 66 84 93 64 66 8...
   quote u:32+95#.inv 5x#.k i. h   NB. base 95 to ASCII repr of string
'0_C5NcBe''e2kA/jhk>5y~ll"x!@A-jp8E%XEh&"$''j(sP8Z!b#e7})]_,L"LCUu)kqsBQ5_5bt}`bq ":1cv(gU;|{I~n5q@(ISCK `'

次に、これをデコードするだけです。5#.inv 95x#.32-~3 u:先ほど説明したものの逆を実行し、インデックスのリストを提供します。次に、('_ /\',LF){~適切な文字を各インデックスに適用します。


4

Mathematica、227バイト

t=Table;T[x_,y_,z_,v_]:=""<>{x,y~t~v,z};Column[Join[b={""<>"_"~t~15},{T["/"," ","\\",15]},t[T["/  /"," ","\\  \\",i],{i,11,19,2}],t[T["\\"," ","/",i],{i,25,19,-2}],{T["\\  ","_","  /",13]},{""<>{"\\",b,"/"}}],Alignment->Center]

4

47 43 41バイト

↗⁶F¹⁵_↓↘⁶←↙⁶↷⁴↑F¹⁵_↖⁶M⁴→↗⁵M¹¹→↓↘⁵M⁵↙↑F¹³_

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

今まで炭については知りませんでしたが、この答えを見つけようとして「自分が何をしているのかわからない」と感じていました。

更新:

  • カーソルの方向と動きを使用することを学んで、なんとか4バイト節約できました!
  • 図面を実現した後に保存された2バイトは、要求どおりではありませんでした。^ __ ^ U

2
Lmao、私を信じて、あなたは炭を使用するときに後者の状態にある唯一のものではありません。初めて使用したときは、キューブを作成しようとしていました。私は「四角」を内蔵し、その後手動でアウトターンは私の57に比べて20バイトでそれを行うことができ、直方体の裏を描いた使用
マジックタコ壺

@carusocomputing O5AB1EまたはJellyの回答がまだ長いとは信じられません... :-D-
チャーリー

2
木炭は非常に競争力のあるASCII指向の言語であり、最適化された回答はバブルガムを完全に消す可能性がある約40バイトです。
魔法のタコUr

5
@carusocomputing は40と言いましたか?
ニール

@ニール私は使用しようとしました‖Bが、どうすればいいのかわかりませんでした...素敵な答え!
チャーリー



3

05AB1E92 86 80バイト

'_15×6ú'/5úð8׫.∞5F'/4N-ú'/2ú«ð6N+׫.∞}4F'\Núð13N-׫.∞}'\4ú'_7×2ú«.∞'\5ú'_8׫.∞»

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


部品の説明

上部のバー

'_      # underscore
  15×   # repeated 15 times
     6ú # with 6 spaces in front

バーのすぐ下の行

'/         # forward slash
  5ú       # with 5 spaces in front
    ð      # space
     8×    # repeated 8 times
       «   # concatenated with the earlier string
        .∞ # intersected mirror (i.e middle space not affected)
           # mirroring: "  /  " => "  /    \  "

六角形の上部の残りの部分

5F                     # for N in 0..4
  '/                   # forward slash
    4N-                # 4 - N
       ú               # spaces in front of the slash
        '/             # another forward slash
          2ú           # with 2 spaces in front
            «          # concatenated with the other string
             ð         # a space character
              6N+      # N + 6
                 ×     # times
                  «    # concatenated with the other string
                   .∞  # intersected mirror
                     } # end for

最後の2行を除く残り

4F               # for N in 0 .. 3
  '\             # backslash
    Nú           # with N spaces in front 
      ð          # a space
       13N-      # 13 - N
           ×     # repeated
            «    # concatenated with other string
             .∞  # intersected mirror
               } # end for

最後から2番目の行

'\ # backslash
  4ú # with 4 spaces in front
    '_ # underscore
      7× # repeated 7 times
        2ú # with 2 spaces in front
          « # concatenated with earlier string
           .∞ # intersected mirror

最後の行

'\ # backslash
  5ú # with 5 spaces in front
    '_ # underscore
      8× # repeated 8 times
        « # concatenated with other string
         .∞ # intersected mirror

»最後には改行上のすべてを結合します。


@carusocomputing:うーん、私はそれを「ミラーリング」することを考えていませんでした。
ニールA.

palindromizeはを除いてミラーは、palindromizeのようなもの{_となり{_{、それはなり鏡でどこ、{_}。パレンドロマイズはû、ミラーは。交差するミラーもあり.∞ます。
魔法のタコUr

@downvoterストップピット。彼はまだゴルフをしていると言った。
魔法のタコUr

3

C#、210 199バイト

スペース実行およびアンダースコア実行の長さをエンコードします。

var h=@"5KL4/>\L3/1/:\1\L2/1/<\1\L1/1/>\1\L0/1/@\1\L/1/B\1\L\H/L0\F/L1\D/L2\B/L3\1I1/L4\K/L";for(var i='M';--i>'/';)h=h.Replace(""+i,i>75?"\n":"".PadLeft(i>72?i-60:i-47," _"[i/73]));Console.Write(h);

ゴルフをしていない:

var h = @"5KL4/>\L3/1/:\1\L2/1/<\1\L1/1/>\1\L0/1/@\1\L/1/B\1\L\H/L0\F/L1\D/L2\B/L3\1I1/L4\K/L";
for (var i = 'M'; --i > '/'; )
    h = h.Replace("" + i, i > 75 ? "\n" : "".PadLeft(i > 72 ? i - 60 : i - 47, " _"[i / 73]));
Console.Write(h);

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





1

Pyth、111バイト

J\/K\\+*6d*15\_+++*5dJ*15dKV5+++*-5hNd"/  /"*+yN11d+++KddK)V4+++*NdK*-25yNdJ)+++++*4dK*2d*13\_*2dJ+++*5dK*15\_J

このコードは基本的に行を次々に出力します(単純な方法で)。ええ、それはひどいですが、今のところ、私はより良い状態ではありません。

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


1

PHP、122バイト

<?=gzinflate(base64_decode("ddDBDQAgCEPRO1N0AxYicf8tFK2JIPT4HycA34iTHRVxJqwvGLvme8LXrxRAKoVmBZypoMNFjbmUtMEl/OV2WHqYTg"));

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

PHP、158バイト

for(;~$c='f000
e/o1d/b/k\b1c/b/m\b1b/b/o\b1a/b/q\b1/b/s\b1\y/
a\w/
b\u/
c\s/
d\b00___b/
e\000/'[$i++];)echo$c>_?str_pad("",ord($c)^96):strtr($c,[_____,"\
"]);

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

PHP、165バイト

<?=strtr("5566666
57/3334
5 13552513352713332 13355 213335 2433335 0 433355 0743333054333505 476666_ 057466666/",[" /
","/  /","\  \
","     ","\\","   ",___,"  "]);

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




1

C#(.NET Core)、169バイト

var d=new char[364];for(int i=10;i-->0;)for(int j="ppnggffggn"[i]-97;j-->0;)d[28*"amlhbccbha"[i]+"ggh{fguva|"[i]-2813+j*("b|~}"[i/3]-97)]="_/\\\n"[i/3];Console.Write(d);

ゴルフをしていない:

var d = new char[364];
for (int i = 10; i-- > 0; )
    for (int j = "ppnggffggn"[i] - 97; j-- > 0; )
        d[28 * "amlhbccbha"[i] + "ggh{fguva|"[i] - 2813 + j * ("b|~}"[i / 3] - 97)] = "_/\\\n"[i / 3];
Console.Write(d);

ストロークごとに、開始位置、長さ、使用する文字、さまざまな文字列内の方向をエンコードしました。同様のストロークをグループ化することで、数バイトを節約しました。

悲しいことに、これはtioで少し奇妙に印刷されます。これは、実際のスペースを印刷していないためです。ただし、コンソールでは問題ありません。したがって、おそらくこの提出は考慮されません。とにかくここにリンクがあります。

オンラインでお試しください!(偽のスペース169バイト)

オンラインでお試しください!(実空間191バイト)



1

ペイントブラシ、43バイト、非競合

13→'_8×←↓s/5{↙s/3→s/3←}↓'\6×↘↑'_8×→↖'_7×←▕┣

説明

13→'_8×←↓s/5{↙s/3→s/3←}↓'\6×↘↑'_8×→↖'_7×←▕┣  Program
13→                                          Move the pointer 13 spaces right
   '_                                        Push '_' onto the stack
     8×                                      Multiply it 8 times
       ←                                     Draw out '________' moving to the left
        ↓                                    Move down
         s/                                  Set that cell to a slash
           5{         }                      Execute function 5 times
             ↙                               Move the pointer one spot down and one spot to the left
              s/                             Set that cell to a slash
                3→                           Move 3 spaces right
                  s/                         Set that cell to a slash
                    3←                       Move 3 spaces left
                      ↓                      Move down
                       '\                    Push r'\'
                         6×                  Multiply it 6 times
                           ↘                 Draw out r'\\\\\\' moving down-right
                            ↑                Move up
                             '_              Push '_'
                               8×            Multiply it 8 times
                                 →           Draw out '________' moving to the right
                                   ↖         Move the pointer one spot up and one spot to the right
                                    '_       Push '_'
                                      7×     Multiply it 7 times
                                        ←▕┣  Draw out '_______' moving to the left
                                         ▕   Remove the rightmost column
                                          ┣  Mirror the entire grid to the right, overlapping the inner column, flipping some characters that have backwards variants

実世界でのベータテスト:

Charcoal: 1
Paintbrush: 0

ええ、多くの改善を行う必要があります。:P


そして、ユーザー自身がソリューションを投稿します!
値インク

@ValueInk時間についてですよね?:P
HyperNeutrino


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