Намалюйте значок гегексону бензолу HyperNeutrino в ASCII


31

На святкуванні HyperNeutrino повертає свій рахунок та представника, слідуючи за містером Xcoder .

HyperNeutrino's flair

Вибачення за обертання малюнка для малювання.


Роздрукуйте або виведіть саме це ASCII-зображення. У вас можуть бути пробіли та / або зворотний новий рядок.

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

Це зображує одну з двох резонансних структур молекули бензолу enter image description here

Пов'язане: Концентричні шестикутники , наповнені зірочкою шестикутники

Табло:


8
Я бачу, @HyperNeutrino відтоді обертав свою іконку, щоб відповідати цьому питанню!
Ніл

5
@Neil Так: P Мене це набридло так сильно, що я просто змінив його, щоб зробити його послідовним. Тепер вам потрібно оновити резонансні структури, xnor: P
HyperNeutrino

1
Дарн, нюх не оновиться, навіть якщо я додавав випадкові невикористані параметри до кінця, змінив його на StackOverflow, змінив її назад і відредагував ще як-
небудь

4
Але горизонтальна версія виглядає некрасивою, коли на мою думку відображається в моєму профілі; могло бути просто те, що я до цього не звик. Отже, я змінив її назад. : P
HyperNeutrino

:( Я хотів побачити!
КалькуляторFeline

Відповіді:



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
  • х = | м |
  • 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

Стиснення цього за допомогою бази-255 призводить до:

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

Де два позначають стиснуту рядок base-255, а 5B перетворює її в base-5.


Друга частина після стиснення:

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 è, звичайно!
Чарівний восьминога Урна

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

Python 2 , 226 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використовуються лише один раз у коді. Ось вона з ними накреслена.
CalculatorFeline

1
Ви можете використовувати 0,1,2,3замість, range(4)щоб зберегти байт.
Esolanging Fruit

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 bytes

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

Charcoal, 47 43 41 bytes

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

Try it online!

I did not know a thing about Charcoal until right now, I felt like "I have no idea of what I'm doing" while trying to figure out this answer... I'm quite sure this can be golfed a lot.

Updates:

  • I managed to save 4 bytes learning to use cursor directions and movements!
  • 2 more bytes saved after realizing the drawing was not exactly as asked. ^__^U

2
Lmao, trust me, you're not the only one to be in the latter state when using charcoal. The first time I used it was trying to make a cube. I used the "square" built-in then manually drew the back of the cuboid, turns out you can do it in 20 bytes compared to my 57.
Magic Octopus Urn

@carusocomputing I cannot believe that O5AB1E or Jelly still have longer answers... :-D
Charlie

2
Charcoal is an extremely competitive ASCII-oriented language, the optimized answer is likely around 40 bytes which may even obliterate bubblegum.
Magic Octopus Urn

5
@carusocomputing cough did you say 40?
Neil

@Neil I did try to use ‖B but I could not figure out how... nice answer!
Charlie

4

Ruby, 117 bytes

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 bytes

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

Try it online!


Explanation in parts

The bar at the top

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

The line immediately below the bar

'/         # 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: "  /  " => "  /    \  "

The remainder of the upper portion of the hexagon

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

The remainder except for the last 2 lines

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

The second to last line

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

The last line

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

The » at the end joins everything on newlines.


@carusocomputing: hmm, I didn't think of "mirroring" it.
Neil A.

Mirror is like palindromize, except with palindromize {_ becomes {_{, where with mirror it becomes {_}. Palendromize is û, while mirror is . There is also an intersected mirror, which is .∞.
Magic Octopus Urn

@downvoter stoppit. He said he's still golfing it.
Magic Octopus Urn

3

C#, 210 199 bytes

Encodes the length of space runs and underscore runs:

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

Ungolfed:

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

Try It Online!


2

Retina, 129 bytes


5$* ¶    
\G (?=( *))
¶$1/  /$`11$* $`\  \
r`(?<=( *)) \G
$1\$'19$* $'/¶
^
6$* 15$*_¶5$* /15$* \
¶$
¶    \  13$*_  /¶5$* \15$*_/

Try it online! Completely different approach, yet coincidentally the same length!




1

Pyth, 111 bytes

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

This code basically prints the lines one after another (in the naive way of doing it). Yeah it sucks, but right now I'm in no state of doing better, and I too still wanted to pay tribute to HyperNeutrino.

Try it online!


1

PHP, 122 bytes

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

Try it online!

PHP, 158 bytes

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,[_____,"\
"]);

Try it online!

PHP, 165 bytes

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

Try it online!



1

Python 2, 187 bytes

a=`int("7YSUQZDJS0I3J2QJ40G9WNPIRBTBC1KF0F3X5WDMBW8CG5BVDHBJQ71V3UHCSY3TR8LC4IIEE5SZ",36)`[:-1]
for i in"0666666_!6__!5/!3\\!9\n!844!422!211!1 ".split("!"):a=a.replace(i[0],i[1:])
print a

Try it online!


1

C# (.NET Core), 169 bytes

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

Ungolfed:

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

For each stroke I encoded the start position, length, character used, and direction within various strings. I saved a few bytes by grouping up similar strokes.

Sadly, this prints a little weird in tio. This is because I'm not printing out real spaces. Looks fine in my console, though. So probably this submission doesn't count. Here's the link anyways.

Try it online! (fake spaces 169 bytes)

Try it online! (real spaces 191 bytes)



1

Paintbrush, 43 bytes, non-competing

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

Explanation

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

Beta Testing in the Real World:

Charcoal: 1
Paintbrush: 0

Gotta make a lot of improvements, huh. :P


And user themself posts a solution!
Value Ink

@ValueInk It's about time, huh? :P
HyperNeutrino

1

Bubblegum, 67 54 bytes

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                           .[~`.?

Try it online!


0

C (gcc), 200 bytes

char o[28];i,j,k,p;f(){for(k=0;k<39;puts(o))for(memset(o,k&&k<32?32:95,27),i=3;i--;k++)for(j=3;j--;o[24-i*3+j]=" _\\/"[p])o[i*3+2-j]=" _/\\"[p="U@@@B@HH@``@@BB@HH@``@@p@@L@@C@p@EL@UC@"[k]-64>>j*2&3];}

Try it online!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.