Walkers Join! - Logo di Alan Walker


13

Potresti conoscere Alan Walker dalla sua sempre popolare canzone Faded. Ora i suoi "seguaci" si chiamano Walker e hanno un logo, ecco una versione semplificata:

\\
 \\              //\\  
  \\            //  \\            //
   \\          //    \\          //
    \\        //      \\        //
     \\      //        \\      //
      \\    //          \\    //
       \\  //    //\\    \\  //
        \\//    //  \\    \\//
         //    //    \\    \\
        //\\  //      \\  //\\
           \\//        \\//  \\
                              \\

L'obiettivo di questa sfida è stampare questo logo.

REGOLE:

  1. Se si restituisce un elenco di stringhe da una funzione come da meta standard, fornire un piè di pagina che lo stampa sullo schermo.
  2. Tutti i personaggi del logo sopra devono essere lì. Nessuna scorciatoia!
  3. Vince il minor numero di byte!

possono esserci spazi extra alla fine di ogni riga (poiché non cambiano l'aspetto dell'output)? Possono esserci nuove linee guida / aggiunte?
dzaima,

@dzaima, sì, puoi.
Dat

+1 per Alan Walker !!
Altamente radioattivo,

Risposte:


14

Carbone , 31 30 29 27 byte

F²«Jι⁰↙χ↖↖⁵↙↙⁵↖↖²P↖χ↙↗χ↘↘¹²

Provalo online! Il collegamento è alla versione dettagliata del codice. Purtroppo Copyin questo caso non fa quello che voglio, quindi devo fare un ciclo. Spiegazione:

F²«Jι⁰

Disegna tutto due volte, ma con il cursore che avvia un carattere a destra la seconda volta.

   ↙χ↖↖⁵↙↙⁵↖↖²P↖χ

Disegna la W principale da destra a sinistra, ma lascia il cursore vicino alla V. invertita

   ↙↗χ↘↘¹²

Disegna la V. invertita


Hai "solo" battuto le soluzioni ingenue di 20 byte: P
Stephen,

1
@StepHen Un risparmio del 46% non è male dato il sovraccarico di impostare un loop in primo luogo ...
Neil

Il mirroring non è solo più breve per questo?
Stephen,

5
@StepHen Correggere l'asimmetria costa troppo. Meglio che potessi fare era di 35 byte: F²«Jι⁰↘χ↗↗⁵M⁵↑←↙χ»‖M↥\\¶ \\F²«Jι⁰↖³.
Neil,

13

JavaScript (ES6), 172 139 byte

let f =

_=>`1
3s1
5o5o
7k9k
9gdg
bchc
d8l8
f48194
h08590
i899
g14d41
n0h05
1p`.replace(/.p?/g,n=>' '.repeat((n=parseInt(n,36))/2)+(c='/\\'[n&1])+c)

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

Come?

Il logo è essenzialmente costituito da gruppi di spazi seguiti da uno //o da un avanzamento \\riga.

Gli spazi e i pattern finali sono codificati usando i valori base-36:

  • Il bit meno significativo indica il modello finale: 0for //, 1for\\ .
  • Tutti gli altri bit danno il numero di spazi prima del pattern finale.

Tutto può essere codificato in questo modo con una singola cifra base-36 tranne l'ultima riga che consiste di 30 spazi seguiti da \\, portando a 30 * 2 + 1 = 61 = 1pin base-36. Questo pdovrebbe essere interpretato come 12 spazi seguiti da \\ma questo schema non appare da nessuna parte. Quindi, possiamo semplicemente gestire questo caso particolare al costo di 2 byte in più nell'espressione regolare: /.p?/.


Prima versione, 186 byte

NB: Questo è stato inviato prima dell'aggiornamento del logo.


Ben giocato a golf. Ho preso una coltellata da solo prima di controllare le risposte; è finito con qualcosa di simile alla tua versione da 172 byte.
Shaggy,

7

Brainfuck , 579 byte

+++++++++[>+>+++++>+++>++++++++++<<<<-]>+>++>+++++>++..<<<.>>.>..<..............<..>>..<..<<.>>..>..<............<..>..>..<............<..<.>>...>..<..........<..>....>..<..........<..<.>>....>..<........<..>......>..<........<..<.>>.....>..<......<..>........>..<......<..<.>>......>..<....<..>..........>..<....<..<.>>.......>..<..<..>....<..>>..<....>..<..<..<.>>........>..<<..>....<..>..>..<....>..<<..<.>>.........<..>....<..>....>..<....>..<<<.>>........<..>>..<..<..>......>..<..<..>>..<<<.>>...........>..<<..>........>..<<..>..>..<<<.>>..............................>..

Provalo online!

Genera le costanti 47 92 32 10in memoria, quindi le seleziona e le emette in modo appropriato.


Sono abbastanza sicuro che questo possa essere risolto, specialmente l'ultima parte
Stan Strum,

@StanStrum Sentiti libero di provare. Ci ho provato ma non sono riuscito a trovare un modo carino per esprimerlo, soprattutto vista la verbosità di BF nei condizionali.
Conor O'Brien,


4

Bubblegum , 77 76 byte

hexdump:

0000000: 75cf c109 8000 0c43 d17b a6c8 0659 28fb  u......C.{...Y(.
0000010: cf21 05cb a782 3de9 4b5a b495 5b9f 4946  .!....=.KZ..[.IF
0000020: 870f dac3 f8ea 5704 51b9 2284 c611 0114  ......W.Q.".....
0000030: 9029 f09e ec67 2362 21e1 075e 2136 29b9  .)...g#b!..^!6).
0000040: 08b9 bf97 8939 cf33 ebbf d33e            .....9.3...>

Provalo online!

Soglia di gomma da masticare. : P


3

/// , 166 byte

/-/!#//,/%"//'/%#//&/!!//%/  //#/\\\/\\\///"/\\\\\\\\//!/%%/"
 "&!'"%
,&-,&-
% "&'!"&'
!"&#!,&#
! "!'&"!'
!,-&,-
!% "'-"!"'
&"#-,!"#
& #-!"!"
&#"'!,'"
&% "#&"#,
&&&!,

Provalo online!


3

C (gcc) , 377 byte

char*r="2\\01 2\\14 2/2\\02 2\\12 2/2 2\\12 2/03 2\\10 2/4 2\\10 2/04 2\\8 2/6 2\\8 2/05 2\\6 2/8 2\\6 2/06 2\\4 2/10 2\\4 2/07 2\\2 2/4 2/2\\4 2\\2 2/08 2\\2/4 2/2 2\\4 2\\2/09 2/4 2/4 2\\4 2\\08 2/2\\2 2/6 2\\2 2/2\\011 2\\2/8 2\\2/2 2\\030 2\\";char d[9];main(i){do{if(*r==48)puts(""),r++;for(i=0;isdigit(*r);d[i++]=*r++);for(d[i]=0,i=atoi(d);i--;putchar(*r));}while(*r++);}

Provalo online!



3

Python 2 , 197 byte

print''.join(i>'/'and(i<'2'and['/','\\'][int(i)]*2or' '*int(i))or i for i in"""1
 19501
2193021
319 0419 0
41806180
51608160
61409 140
71204014120
8104021410
90404141
8012061201
921081021
99931""")

Provalo online!

Utilizza la logica della risposta JS.



3

Haskell, 161 160 byte

foldr(\a->(++(' '<$[1..fromEnum a-last(96:[64|a<'`'])])++last("\\\\":["//"|a<'`'])))""<$>words"` `Na LbLb JdJc HfHd FhFe DjDf Bd`DBg @dbD@h ddDI `BfB`H b@h@k ~"

Provalo online!

Gli spazi prima \\sono codificati come lettere minuscole e prima //come lettere maiuscole dove il numero di spazi è il valore ASCII meno 96 (o 64). Lo spazio zero è `/ @. Gli spazi di ogni riga sono memorizzati in ordine inverso, perché sono consumati da una piega a destra.


2

Carbone , 51 byte

P↘¹²→↘¹²↑P↗⁵→↗⁵↓P↘⁵→↘⁵↑P↗χ→↗χM¹¹↓M⁵←P↖¹²←↖¹²↓P↙χ←↙χ

Provalo online!

Carbone , 50 byte

P↘χ→↘χ↑P↗⁵→↗⁵M⁵↑←P↙χ←↙χMχ↗‖MM¹⁸←P↖²←↖²J²⁷¦⁹P↘²→↘²¦

Provalo online!


2

Carbone di legna , 50 31 byte

F²«↘¹²↗↗⁵↘↘⁵↗↗⁹Mχ↓M⁴←↖¹²↙↙χJ¹¦⁰

Provalo online! Il collegamento è alla versione dettagliata.

Provai. (Inoltre, farò notare che l'ho fatto completamente da solo, anche se sembra un po 'simile all'altro. [Shiz, l'ho fatto di nuovo. Questo è comunque diverso, tra l'altro.: P])


1

Gelatina , 65 byte

“<fṭY2Ẹ<ƭẹ£ʋ¥¹)Œ<Ẓ⁹ḣ⁶ıĠ\ṃṛ?04|ẏḌẉƙ+’b36⁶ẋ“ÇỴ$ñ⁵FḄ’Bị⁾\/¤ẋ€2¤żFs36

Provalo online!

Restituisce un elenco di caratteri. Il collegamento TIO ha un piè di pagina da stampare su righe separate.


1

PHP, 186 byte:

Entrambe le versioni richiedono PHP 5.5 o successive.

Corri con -nro provali online


la compressione dello spazio offre l'alternativa più breve:

(doppia barra rovesciata mappata a 0, doppia barra rovesciata a f, sapces compressi in cifre)

while(~$c="0
1077f0
2066f2066f
3055f4055f
408f608f
506f806f
604f5504f
702f4f0402f
80f4f2040f
9f4f4040
8f02f602f0
560f80f20
87870"[$i++])echo+$c?str_pad("",$c):strtr($c,["\\\\",f=>"//"]);

PHP 7.1 genera avvisi; sostituire +$ccon $c>0per risolvere.


base 64 codificata bitmap ( 187 byte ):

(spazio mappato su 00, newline in 01, double backslash to 10e double slash to 11, quindi concatenati 3 "pixel" ciascuno a un carattere, anteposto 1e convertito da binario a ASCII)

for(;$c=ord("d`@@@@yB@@@@p`@@@M@`@@C@H@@@t@`@@p@H@@M@B@@p@@`@M@@`C@@@H@t@@`pC`BCP@@l@p`Bt@@C@L@`BP@@xL@BCd@@@K@@Bpd@@@@@@@@@B"
[$i++]);)for($b=6;$b;)echo[" ","
","\\\\","//"][3&$c>>$b-=2];

(prima interruzione di riga per comodità di lettura; l'altra è essenziale)


1

Bubblegum , 74 byte

00000000: 758c 4b11 0400 0885 eea6 a081 85e8 9f63  u.K............c
00000010: 4fb2 7f4f 0e30 4f07 e5ed 7615 8613 e16f  O..O.0O...v....o
00000020: 321c ab89 d484 4a22 2591 8a48 45a0 2052  2.....J"%..HE. R
00000030: 809e dfd5 481e 3d0d 7a24 4d96 bc43 b2fd  ....H.=.z$M..C..
00000040: 96d3 cdbf fff9 7fa7 f300                 ..........

Provalo online!


1

PowerShell , 221 220 byte

$ofs=''
"b
 b$(' '*14)/b
$((2..6|%{' '*$_+"b$(($a=' '*(14-++$i*2)))/$(' '*$i*2)b$a/`n"}))   4b  /4/b4b  /
44b/4/  b4b/
44 /4/4b4b
44/b  /4  b  /b
44   b/44b/  b
$(' '*30)b"-replace4,'    '-replace'/','//'-replace'b','\\'

Provalo online!

Approccio abbastanza ingenuo ( e 50 byte peggiori della risposta JS, rabbia ). Qualcuno sa come fare più -replaces in PowerShell?

-1 byte grazie alla Veskah.



@Veskah Semplice risparmio di byte. Grazie!
AdmBorkBork

1

Python 2 , 180 byte

print''.join(c<'3'and'\\/\n\\/'[int(c)::3]or' '*(int(c,36)-2)for c in'0230g104240e140e1250c160c1260a180a127081a08128061c0612904161060412a0161406012b16160602a1041804102d01a01402w0')

Provalo online!

La codifica è base 36:

0 => \\
1 => //
2 => \n

e altrimenti,

n => (n-2) spaces

1

C # (compilatore interattivo Visual C #) , 122 byte (121 caratteri)

_=>@"
A
9;13) +!(# 0$(	-) 
4	(	€".SelectMany(j=>(j%2>0?"//":@"\\").PadLeft(j/4)+(j%4>1?"\n":""))

Provalo online!

Spiegazione

Ogni parte del logo ha solo 0+ spazi con una \\o una //alla fine, più forse una nuova riga. Ce ne sono 52 . Quindi codifichiamo ogni segmento in un personaggio:

  • Prendi il numero di spazi in ciascun segmento, quindi aggiungi 2 a quel numero.

  • Bit sposta il numero a sinistra 2 volte.

  • Se il segmento termina con //, bit per bit O il numero di uno.

  • Se il segmento termina con una nuova riga, bit per bit O il numero per due.

  • Prendi il numero e lancialo in un carattere.

  • Ripetere l'operazione per ogni segmento.

Ecco tutti i 52 segmenti e il valore numerico in cui codificano:

10,12,65,10,16,57,16,59,20,49,24,51,24,41,32,43,28,33,40,35,32,25,48,27,36,17,25,8,24,19,40,9,25,16,24,11,45,25,24,26,41,8,17,32,17,10,52,9,40,9,18,128

j>>2->j/4
ASCII il

124 . penso anche che tu possa inserire i byte null se crei manualmente l'URL
solo ASCII

nella spiegazione: bit shift a sinistra , non a destra. anche l'elenco delle stringhe è solo se si restituisce ogni riga come stringa propria ... è necessario il string.Concatqui per essere valido ...
ASCII

vicino , questo è 143 mentre normale è 141
solo ASCII il

@ ASCII-only Sono abbastanza sicuro di poter restituire un elenco di stringhe come questa, ma aggiungerò un'altra soluzione per ogni evenienza. Tuttavia, questo è valido: tio.run/##Sy7WTS7O/…
Incarnazione dell'ignoranza

0

C (gcc) , 144 140 139 byte

-4 byte grazie a ceilingcat .

Ogni carattere nella stringa codifica un numero di spazi da utilizzare prima di una determinata stringa. Se è una lettera minuscola (o un backtick), la stringa è "\" e, se maiuscola o @, è "//". Uno spazio indica una nuova riga.

f(c,i){for(i=0;c="` aN` bLbL cJdJ dHfH eFhF fDjD gBD`dB h@Dbd@ IDdd H`BfB` k@h@b ~"[i++];)printf("%*s",c%32+2,c<33?"\n":c<96?"//":"\\\\");}

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.