HyperNeutrino의 벤젠 hegaxon 아이콘을 ASCII로 그리기


31

Xcoder 씨에 이어 HyperNeutrino 가 자신의 계정과 담당자를 되 찾는 것을 축하 했습니다 .

하이퍼 뉴트리노의 감각

드로어 블을 위해 그림을 회전하는 것에 대한 사과.


이 ASCII 아트를 정확하게 인쇄하거나 출력하십시오. 후행 공백 및 / 또는 후행 줄 바꿈이있을 수 있습니다.

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

이것은 분자 벤젠 의 두 공명 구조 중 하나를 묘사합니다. 여기에 이미지 설명을 입력하십시오

관련 : 동심 육각형 , 별표 채워진 육각형

리더 보드 :


8
@HyperNeutrino가이 질문에 맞게 아이콘을 회전시킨 것을 볼 수 있습니다!
Neil

5
@Neil Yes : P 너무 귀찮아서 일관성을 유지하기 위해 방금 변경했습니다. 이제 공명 구조를 업데이트해야합니다. xnor : P
HyperNeutrino

1
이놈은, 감각은 내가 끝까지 임의 사용되지 않는 매개 변수를 추가 StackOverflow의로 변경, 다시 변경하고, 10 배처럼 서로를 편집하더라도 업데이트되지 않습니다 : I
HyperNeutrino

4
그러나 수평 버전은 내 의견으로 내 프로필에 렌더링 할 때보기 흉한 것처럼 보입니다. 내가 익숙하지 않은 것일 수도 있습니다. 그래서 나는 그것을 다시 바꿨다. : P
HyperNeutrino 2016 년

:(보고 싶었다!
CalculatorFeline

답변:


24

, 23 바이트

×_⁷↙←×_⁸↖⁶→↗⁶P×_⁸↘↓↙⁵‖B

온라인으로 사용해보십시오! 설명 : 다음 순서로 행을 인쇄 한 후 모든 것을 수평으로 반영합니다.

      5_______
     /        
    /  6      
   /  ↙       
  /  /        
 ↗  /         
4  /          
\             
 \            
  \           
   \          
    ↖  1→_____
     3______←2

5
‖B"Reflect Butterfly"의 약자
CalculatorFeline

8

자바 스크립트 (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

두 개 는 base-255 압축 문자열을 나타내고 5B는 base-255로 변환합니다.


압축 후 두 번째 부분 :

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.

당신은 같은 3 바이트를 저장할 수있는
Emigna

è물론 @emigna !
Magic Octopus Urn

5

V , 61 바이트

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

온라인으로 사용해보십시오!

16 진 덤프 :

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

파이썬 2 , 226213 바이트 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 : 34 바이트를 절약 @ValueInk, @jacoblaw, @WheatWizard, @CalculatorFeline 및 @ Challenger5 덕분에


1
b,f,s,u='\/ _';o,a='/ /','\ \\'현재 변수 초기화보다 11 바이트를 절약합니다! 여기를 참조하십시오
Value Ink

1
ValueInk의 팁 @ 사용하고 목록을 통해 4 개 라인을하지, 당신은 195 바이트 같은
jacoblaw

1
@jacoblaw 당신은 그 안에 모든 공간이 필요하지 않습니다. 여기에 그것들이 없습니다.
위트 마법사

1
o그리고 a코드 만에 한 번 사용된다. 여기에 그것들이 인라인되어 있습니다.
CalculatorFeline

1
바이트를 저장하는 0,1,2,3대신 사용할 수 있습니다 range(4).
Esolanging 과일

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

수학, 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 바이트로 할 수 있습니다.
Magic Octopus Urn

@carusocomputing O5AB1E 또는 Jelly가 여전히 더 이상 응답을 가지고 있다고 믿을 수 없습니다 ... :-D
Charlie

2
숯은 매우 경쟁적인 ASCII 지향 언어이며, 최적화 된 답변은 약 40 바이트로 풍선 껌을 없애 버릴 수 있습니다.
Magic Octopus Urn

5
@carusocomputing 기침 당신은 40 말 했습니까?
Neil

@ Neil 사용하려고 ‖B했지만 어떻게 ... 좋은 대답을 알 수 없었습니다!
Charlie

4

루비, 117 바이트

13.times{|i|s=[?_*(15--i%12*1.3),"/%#{i*2+8}s"%?\\,''][(i%12%11+3)/5].center(27)
i>0&&(s[i-=7]=?\\)&&s[~i]=?/
puts s}


3

05AB1E , 92 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

두 번째 줄부터 마지막 ​​줄까지

'\ # 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 : 흠, 나는 "거울"에 대해 생각하지 않았다.
Neil A.

거울은 palindromize {_가되고 {_{거울이있는 곳 은 제외하고 palindromize와 같습니다 {_}. Palendromize는 û이고, 미러는 입니다. 교차 거울도 있습니다 .∞.
매직 문어 Urn

@ downvoter stoppit. 그는 아직도 골프를하고 있다고 말했다.
Magic Octopus Urn

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

이 코드는 기본적으로 행을 하나씩 순전히 인쇄합니다 (순진한 방식으로). 그래, 그것은 짜증 나지만, 지금은 나아지고있는 상태에 있지 않으며, 나는 여전히 HyperNeutrino 에게 경의를 표하고 싶었다 .

온라인으로 사용해보십시오!


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 코어) , 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

많은 개선이 필요합니다. :피


그리고 사용자 스스로 솔루션을 게시합니다!
밸류 잉크

@ValueInk 시간이 다되었습니다. : P
HyperNeutrino

1

풍선 껌 , 67 54 바이트

00000000: 55c9 310d 0040 0804 c1fe 55e0 0043 24f8  U.1..@....U..C$.
00000010: 77f1 c955 cc96 3b95 d65e 6697 4d76 0b93  w..U..;..^f.Mv..
00000020: cf06 f847 0448 d1e6 0ceb 5722 8421 1010  ...G.H....W".!..
00000030: d95b 7e60 ad3f                           .[~`.?

온라인으로 사용해보십시오!


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.