Wanderer Mach mit! - Alan Walkers Logo


13

Du könntest Alan Walker von seinem allseits beliebten Song Faded kennen. Jetzt heißen seine "Anhänger" Walker und sie haben ein Logo. Hier ist eine vereinfachte Version:

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

Ziel dieser Herausforderung ist es, dieses Logo zu drucken.

REGELN:

  1. Wenn Sie eine Liste von Zeichenfolgen aus einer Funktion gemäß Metastandards zurückgeben, stellen Sie bitte eine Fußzeile bereit, die diese auf dem Bildschirm druckt.
  2. Alle Zeichen des obigen Logos müssen vorhanden sein. Keine Abkürzungen!
  3. Kürzeste Anzahl von Bytes gewinnt!

Kann es am Ende jeder Zeile zusätzliche Leerzeichen geben (da sie das Erscheinungsbild der Ausgabe nicht ändern)? Kann es führende / anhängende Zeilen geben?
Dzaima

@dzaima, ja du kannst.
Dat

+1 für Alan Walker !!
Hochradioaktiv

Antworten:


14

Kohle , 31 30 29 27 Bytes

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

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Tut Copyin diesem Fall leider nicht das, was ich will, also muss ich stattdessen eine Schleife machen. Erläuterung:

F²«Jι⁰

Zeichne alles zweimal, aber mit dem Cursor, der beim zweiten Mal ein Zeichen nach rechts beginnt.

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

Zeichne das Haupt-W von rechts nach links, aber lasse den Cursor in der Nähe des invertierten V.

   ↙↗χ↘↘¹²

Zeichne das invertierte V.


Sie haben "nur" die naiven Lösungen um 20 Bytes übertroffen: P
Stephen

1
@StepHen Eine Ersparnis von 46% ist nicht schlecht, wenn man bedenkt, wie viel Zeit es kostet, eine Schleife aufzubauen ...
Neil,

Ist das Spiegeln dafür nicht kürzer?
Stephen

5
@StepHen Die Beseitigung der Asymmetrie kostet zu viel. Beste , was ich tun konnte , war 35 Bytes: 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>

Wie?

Das Logo besteht im Wesentlichen aus Gruppen von Leerzeichen, gefolgt von entweder //oder \\und Zeilenumbrüchen.

Leerzeichen und Endmuster werden mit Base-36-Werten codiert:

  • Das niedrigstwertige Bit gibt das Endmuster an: 0für //, 1für \\.
  • Alle anderen Bits geben die Anzahl der Leerzeichen vor dem Endmuster an.

Alles kann auf diese Weise mit einer einzelnen Base-36-Ziffer codiert werden, mit Ausnahme der letzten Zeile, die aus 30 Leerzeichen besteht, gefolgt von \\30 * 2 + 1 = 61 = 1pin Base-36. Dies psollte als 12 Leerzeichen gefolgt von interpretiert werden, \\aber dieses Muster erscheint nirgendwo. So können wir einfach handhaben diesen speziellen Fall auf Kosten des 2 zusätzlichen Bytes im regulären Ausdruck: /.p?/.


Erste Version, 186 Bytes

NB: Dieser wurde vor dem Logo-Update eingereicht.


Schön golfen. Ich habe es selbst probiert, bevor ich die Antworten überprüft habe. Endete mit etwas ähnlich Ihrer 172-Byte-Version.
Shaggy

7

Brainfuck , 579 Bytes

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

Probieren Sie es online!

Erzeugt die Konstanten 47 92 32 10im Speicher, wählt sie dann aus und gibt sie entsprechend aus.


Ich bin mir ziemlich sicher, dass man damit Golf spielen kann, besonders mit dem letzten Teil
Stan Strum,

@StanStrum Probieren Sie es einfach aus. Ich versuchte es, fand aber keine gute Möglichkeit, es auszudrücken, besonders angesichts der Ausführlichkeit von BF in Bedingungen.
Conor O'Brien


4

Kaugummi , 77 76 Bytes

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

Probieren Sie es online!

Bubblegum Schwelle. : P



3

C (gcc) , 377 Bytes

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

Probieren Sie es online!




3

Haskell, 161 160 Bytes

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 ~"

Probieren Sie es online!

Leerzeichen davor \\werden als Kleinbuchstaben und davor //als Großbuchstaben codiert, wobei die Anzahl der Leerzeichen der ASCII-Wert minus 96 (oder 64) ist. Leerzeichen sind `/ @. Die Leerzeichen jeder Zeile werden in umgekehrter Reihenfolge gespeichert, da sie durch eine Rechtsfalte verbraucht werden.


2

Kohle , 51 Bytes

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

Probieren Sie es online!

Holzkohle , 50 Bytes

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

Probieren Sie es online!


2

Kohle , 50 31 Bytes

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

Probieren Sie es online! Link ist zur ausführlichen Version.

Ich habe es versucht. (Außerdem werde ich darauf hinweisen, dass ich das komplett selbst gemacht habe, auch wenn es dem anderen etwas ähnlich sieht. [Shiz, ich habe es noch einmal gemacht. Das ist übrigens immer noch anders.: P])


1

Gelee , 65 Bytes

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

Probieren Sie es online!

Gibt eine Liste von Zeichen zurück. TIO Link verfügt über eine Fußzeile, die in separaten Zeilen gedruckt werden kann.


1

PHP, 186 Bytes:

Beide Versionen erfordern PHP 5.5 oder höher.

Laufen Sie mit -nroder probieren Sie sie online aus


Die Raumkomprimierung bietet die kürzeste Alternative:

(doppelter Backslash, der zugeordnet ist 0, doppelter Slash f, Sapces, die auf Ziffern komprimiert sind)

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 gibt Warnungen aus; ersetzen +$cmit $c>0zu reparieren.


Basis 64 codierte Bitmap ( 187 Bytes) ):

(Leerzeichen auf 00, Zeilenvorschub auf 01, doppelter Backslash auf 10und doppelter Slash auf11 , dann 3 "Pixel" zu je einem Zeichen verkettet, vorangestellt 1und von binär nach ASCII konvertiert)

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

(erster Zeilenumbruch zum bequemen Lesen; der andere ist unerlässlich)


1

Bubblegum , 74 Bytes

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

Probieren Sie es 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','\\'

Probieren Sie es online!

Ziemlich naiver Ansatz ( und 50 Bytes schlechter als die JS-Antwort, zusammenzucken ). Jeder kennt einen Weg, um mehrere zu tun-replace s in PowerShell auszuführen?

-1 Byte dank Veskah.



@Veskah Einfache Byteeinsparung. Vielen Dank!
AdmBorkBork

1

Python 2 , 180 Bytes

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

Probieren Sie es online!

Die Kodierung ist Basis 36:

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

und ansonsten,

n => (n-2) spaces

1

C # (Visual C # Interactive Compiler) , 122 Byte (121 Zeichen)

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

Probieren Sie es online!

Erläuterung

Jeder Teil des Logos besteht aus 0 oder mehr Leerzeichen mit einem \\oder einem// am Ende sowie möglicherweise einem Zeilenumbruch. Es gibt 52 davon. Wir kodieren dann jedes Segment in ein Zeichen:

  • Nehmen Sie die Anzahl der Leerzeichen in jedem Segment und addieren Sie 2 zu dieser Zahl.

  • Bit verschieben Sie die Zahl 2 mal nach links.

  • Wenn das Segment mit endet // , bitweise ODER die Zahl um eins.

  • Wenn das Segment mit einem Zeilenumbruch endet, ODER die Zahl bitweise um zwei.

  • Nimm die Zahl und wirf sie in einen Buchstaben.

  • Wiederholen Sie dies für jedes Segment.

Hier sind alle 52 Segmente und der numerische Wert, in den sie codieren:

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
Nur ASCII

124 . Ich denke auch, dass Sie die Null-Bytes eingeben können, wenn Sie die URL von Hand erstellen
ASCII

in der erklärung: bitshift left , not right. Die Liste der Zeichenfolgen ist nur dann string.Concatgültig, wenn Sie jede Zeile als eigene Zeichenfolge zurückgeben.
Nur ASCII

In der Nähe ist dies 143, während normal 141 ist
ASCII

@ Nur ASCII Ich bin mir ziemlich sicher, dass das Zurückgeben einer solchen Liste von Zeichenfolgen zulässig ist, aber ich füge für alle Fälle eine andere Lösung hinzu. Ist dies jedoch gültig:Ist ? Tio.run/##Sy7WTS7O/…
Verkörperung der Ignoranz

0

C (GCC) , 144 140 139 Bytes

-4 Bytes dank Ceilingcat .

Jedes Zeichen in der Zeichenfolge codiert eine Anzahl von Leerzeichen, die vor einer bestimmten Zeichenfolge verwendet werden sollen. Wenn es sich um einen Kleinbuchstaben (oder ein Backtick) handelt, lautet die Zeichenfolge "\", und wenn es sich um Großbuchstaben oder ein @ handelt, lautet sie "//". Ein Leerzeichen kennzeichnet einen Zeilenumbruch.

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?"//":"\\\\");}

Probieren Sie es online!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.