Disegna l'icona dell'egaxone del benzene di HyperNeutrino in ASCII


31

In celebrazione di HyperNeutrino che recupera il suo account e il suo rappresentante, seguendo Mr. Xcoder .

Il talento di HyperNeutrino

Ci scusiamo per aver ruotato l'immagine per la disegnabilità.


Stampa o stampa esattamente questa arte ASCII. Potresti avere spazi finali e / o una nuova riga finale.

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

Questo raffigura una delle due strutture di risonanza della molecola benzene inserisci qui la descrizione dell'immagine

Correlati: esagoni concentrici , esagoni pieni di asterisco

Classifica:


8
Vedo che @HyperNeutrino da allora ha ruotato la sua icona per rispondere a questa domanda!
Neil,

5
@Neil Sì: P Mi ha infastidito così tanto che l'ho appena cambiato per renderlo coerente. Ora è necessario aggiornare le strutture di risonanza, xnor: P
HyperNeutrino,

1
Accidenti, il gusto non si aggiorna anche se alla fine ho aggiunto parametri casuali inutilizzati, l'ho cambiato in StackOverflow, l'ho cambiato di nuovo e ne ho modificato un altro come 10 volte: I
HyperNeutrino,

4
Ma la versione orizzontale sembra brutta se resa sul mio profilo secondo me; potrebbe essere che non ci sono abituato. Quindi, l'ho cambiato di nuovo. : P
HyperNeutrino,

:( Volevo vedere!
CalculatorFeline il

Risposte:


24

Carbone , 23 byte

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

Provalo online! Spiegazione: Stampa le linee nel seguente ordine, quindi riflette tutto in orizzontale:

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

5
‖Bsta per "Reflect Butterfly"
CalculatorFeline

8

JavaScript (ES6),  144  143 140 138 134 byte

Una funzione ricorsiva che disegna l'output carattere per carattere con un'espressione puramente condizionale.

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):''

Come?

Per ogni posizione 0 <p ≤ 363 , definiamo:

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

Di seguito è riportato un dettaglio della formula da cui viene scelto il carattere appropriato [ '\', '/', ' ', '_', '\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

E di seguito sono le diverse parti nel sistema di coordinate definito sopra:

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

dimostrazione


7

05AB1E , 50 byte

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

Provalo online!


La compressione:

La strategia qui era quella di costruire metà dell'oggetto, quindi rispecchiare l'immagine attraverso il segno a metà strada. Per fare questo, ho prima costruito la metà sinistra, con imbottitura frontale:

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

Ma nessuna imbottitura giusta, questo perché la .Bfunzione in 05AB1E può essere utilizzata per rendere ogni elemento uguale in lunghezza usando gli spazi. Questo mi permette di omettere gli spazi estranei a destra e delimitare semplicemente con le nuove righe. Ho quindi preso questo schema e rimosso tutte le nuove righe sostituendole con 4per ottenere:

1111112222222241111104111101104111011041101104101104011043413411341113411113112222222411111322222222

La compressione di questo con base-255 comporta:

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

Dove i due indicano una stringa compressa base-255 e 5B la converte in base 5.


La seconda parte, dopo la compressione:

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.

È possibile salvare 3 byte in questo modo
Emigna il

@emigna è, ovviamente!
Magic Octopus Urn,

5

V , 61 byte

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

Provalo online!

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 byte 179 byte

Il mio primo golf!

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

Provalo online!

Ho provato ad eseguire il loop dei bit su cui potevo trovare uno schema e ho hardcoded il resto. L'impostazione dei diversi caratteri su una variabile ha consentito di risparmiare parecchi byte.

Modifica: ha deciso di aggiungere allo stesso array invece di unirsi più volte. 13 byte salvati.

Modifica 2: grazie a @ValueInk, @jacoblaw, @WheatWizard, @CalculatorFeline e @ Challenger5, risparmiato 34 byte


1
b,f,s,u='\/ _';o,a='/ /','\ \\'salva 11 byte sull'inizializzazione della variabile corrente! Vedi qui
Value Ink,

1
usando il suggerimento di @ ValueInk e non facendo un elenco su 4 righe, hai 195 byte in questo modo
jacoblaw

1
@jacoblaw Non hai bisogno di tutti gli spazi. Qui è senza di loro.
Wheat Wizard,

1
oe avengono utilizzati una sola volta nel codice. Eccolo con loro in linea.
Calcolatrice

1
È possibile utilizzare 0,1,2,3invece di range(4)salvare un byte.
Esolanging Fruit,

4

J , 155 byte

('_ /\',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 `'[<

Provalo online!

Questa è una funzione che non prevede input. Ad esempio, f =: <code>allora f ''.

Spiegazione

L'ho codificato usando i seguenti passaggi. Supponiamo che la stringa di compressione desiderata sia contenuta nella variabile 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 `'

Quindi, dobbiamo solo decodificare questo. 5#.inv 95x#.32-~3 u:esegue l'inverso di quello che ho appena descritto, dandoci l'elenco degli indici. Quindi ('_ /\',LF){~applica i caratteri appropriati a ciascun indice.


4

Mathematica, 227 byte

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

Carbone , 47 43 41 byte

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

Provalo online!

Non sapevo nulla di Charcoal fino ad ora, mi sentivo come "Non ho idea di cosa sto facendo" mentre cercavo di capire questa risposta ... Sono abbastanza sicuro che si possa giocare molto a golf.

aggiornamenti:

  • Sono riuscito a salvare 4 byte imparando ad usare le direzioni e i movimenti del cursore!
  • Altri 2 byte salvati dopo aver realizzato il disegno non erano esattamente come richiesti. ^ __ ^ U

2
Lmao, fidati di me, non sei l'unico ad essere in quest'ultimo stato quando usi il carbone. La prima volta che l'ho usato stava cercando di creare un cubo. Ho usato il "quadrato" incorporato quindi ho disegnato manualmente la parte posteriore del cuboide, risulta che puoi farlo in 20 byte rispetto al mio 57.
Magic Octopus Urn

@carusocomputing Non riesco a credere che O5AB1E o Jelly abbiano ancora risposte più lunghe ... MrGreen
Charlie,

2
Il carbone di legna è un linguaggio orientato verso ASCII estremamente competitivo, la risposta ottimizzata è probabilmente di circa 40 byte che potrebbe persino cancellare la gomma da masticare.
Magic Octopus Urn,

5
@carusocomputing tosse hai detto 40?
Neil,

@Neil ho provato ad usare ‖Bma non sono riuscito a capire come ... bella risposta!
Charlie

4

Rubino, 117 byte

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 byte

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

Provalo online!


Spiegazione in parti

Il bar in alto

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

La linea immediatamente sotto la barra

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

Il resto della parte superiore dell'esagono

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

Il resto ad eccezione delle ultime 2 righe

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

La penultima riga

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

L'ultima riga

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

Alla »fine unisce tutto su newline.


@carusocomputing: hmm, non ho pensato di "rispecchiarlo".
Neil A.

Lo specchio è come palindromize, tranne che con palindromize {_diventa {_{, dove con lo specchio diventa {_}. Palendromize è û, mentre lo specchio è . C'è anche uno specchio intersecato, che è .∞.
Magic Octopus Urn,

@downvoter stoppit. Ha detto che lo sta ancora giocando a golf.
Magic Octopus Urn,

3

C #, 210 199 byte

Codifica la lunghezza delle corse dello spazio e delle sottolineature:

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

Provalo online!


2

Retina , 129 byte


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

Provalo online! Approccio completamente diverso, ma per coincidenza della stessa lunghezza!


1

/// , 152 byte

/,/  //'/\\!!!//&/\\"\\
//%/\/"\/!!//#/_____//"/,\\//!/,, /! ###
!\/!!!\\
,"% \& "% "&"%!\& \%!"&\%!,"&\'!!\/
 \'! "/
"'! \/
 "',"/
,"\,##___"/
!\\###\/

Provalo online!



1

Pyth , 111 byte

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

Questo codice fondamentalmente stampa le righe una dopo l'altra (nel modo ingenuo di farlo). Sì, fa schifo, ma in questo momento non sono in grado di fare di meglio, e anche io volevo ancora rendere omaggio a HyperNeutrino .

Provalo online!


1

PHP , 122 byte

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

Provalo online!

PHP , 158 byte

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

Provalo online!

PHP , 165 byte

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

Provalo online!



1

Python 2 , 187 byte

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

Provalo online!


1

C # (.NET Core) , 169 byte

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

Per ogni tratto ho codificato la posizione iniziale, la lunghezza, il carattere utilizzato e la direzione all'interno di varie stringhe. Ho salvato alcuni byte raggruppando tratti simili.

Purtroppo, questo stampa un po 'strano in tio. Questo perché non sto stampando spazi reali. Sembra bene nella mia console, però. Quindi probabilmente questa presentazione non conta. Ecco il link comunque.

Provalo online! (spazi falsi 169 byte)

Provalo online! (spazi reali 191 byte)


1

Python 2 , 154 138 byte

print'eNp10MEJAEEIA8C/VaSDNBTY/rtYlByci+aZER8BMqcnqiR6FG7/IPd87w0c/pQMYBrFJmxhQDstljJSQUrb5euhZzBe6PI3aQ=='.decode('base64').decode('zip')

Provalo online!


1

Pennello , 43 byte, non competitivo

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

Spiegazione

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 test nel mondo reale:

Charcoal: 1
Paintbrush: 0

Devo apportare molti miglioramenti, eh. : P


E l'utente stesso pubblica una soluzione!
Value Ink

@ValueInk È giunto il momento, eh? : P
HyperNeutrino,

1

Bubblegum , 67 54 byte

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

Provalo online!


0

C (gcc) , 200 byte

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];}

Provalo online!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.