Walkers Join! - Logo Alana Walkera

13

Być może znasz Alana Walkera z jego zawsze popularnej piosenki Faded. Teraz jego „obserwatorzy” nazywają się Walkerami i mają logo, oto uproszczona wersja:

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

Celem tego wyzwania jest wydrukowanie tego logo.

ZASADY:

  1. Jeśli zwrócisz listę ciągów znaków z funkcji zgodnie ze standardami meta, podaj stopkę, która wydrukuje ją na ekranie.
  2. Wszystkie znaki powyższego logo muszą tam być. Bez skrótów!
  3. Najkrótsza liczba bajtów wygrywa!
Dat
źródło
czy na końcu każdej linii mogą znajdować się dodatkowe spacje (ponieważ nie zmieniają one wyglądu danych wyjściowych)? Czy mogą istnieć wiodące / dołączające nowe linie?
dzaima
@dzaima, tak, możesz.
Dat
+1 dla Alana Walkera !!
Wysoce radioaktywny

Odpowiedzi:

14

Węgiel drzewny , 31 30 29 27 bajtów

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

Wypróbuj online!Link jest do pełnej wersji kodu. Niestety Copynie robi tego, co chcę w tym przypadku, więc zamiast tego muszę zapętlić. Wyjaśnienie:

F²«Jι⁰

Narysuj wszystko dwa razy, ale za drugim razem kursor rozpocznie znak od prawej strony.

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

Narysuj główny W od prawej do lewej, ale pozostaw kursor w pobliżu odwróconego V.

   ↙↗χ↘↘¹²

Narysuj odwrócony V.

Neil
źródło
„Tylko” pokonałeś naiwne rozwiązania o 20 bajtów: P
Stephen
1
@StepHen Oszczędność 46% nie jest zła, biorąc pod uwagę koszty związane z tworzeniem pętli w pierwszej kolejności ...
Neil
Czy tworzenie kopii lustrzanych nie jest po prostu krótsze?
Stephen
5
@StepHen Zbyt duże naprawianie asymetrii kosztuje. Najlepiej mogłem zrobić, to 35 bajtów: F²«Jι⁰↘χ↗↗⁵M⁵↑←↙χ»‖M↥\\¶ \\F²«Jι⁰↖³.
Neil,
13

JavaScript (ES6), 172 139 bajtów

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>

W jaki sposób?

Logo zasadniczo składa się z grup spacji, po których następuje znak „ //albo” \\i „line”.

Odstępy i wzory końcowe są kodowane przy użyciu wartości base-36:

  • Najmniej znaczący bit podaje wzór końcowy: 0for //, 1for\\ .
  • Wszystkie pozostałe bity podają liczbę spacji przed wzorem końcowym.

Wszystko można zakodować w ten sposób za pomocą pojedynczej cyfry 36-bazowej, z wyjątkiem ostatniego wiersza, który składa się z 30 spacji, po których następuje \\30 * 2 + 1 = 61 = 1pw bazie-36. To ppowinno być interpretowane jako 12 miejsc, po czym \\jednak ten wzór nie pojawia się nigdzie. Tak więc, możemy po prostu obsłużyć ten szczególny przypadek kosztem 2 dodatkowych bajtów w wyrażeniu regularnym: /.p?/.


Pierwsza wersja, 186 bajtów

Uwaga: Ten został przesłany przed aktualizacją logo.

Arnauld
źródło
Ładnie gra w golfa. Sam sprawdziłem to, zanim sprawdziłem odpowiedzi; skończyło się czymś podobnym do twojej 172-bajtowej wersji.
Shaggy
7

pieprzenie mózgu , 579 bajtów

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

Wypróbuj online!

Generuje stałe 47 92 32 10w pamięci, a następnie odpowiednio je wybiera i wysyła.

Conor O'Brien
źródło
Jestem prawie pewien, że można to zagrać w golfa, szczególnie ostatnia część
Stan Strum
@StanStrum Zapraszam do spróbowania. Próbowałem, ale nie mogłem znaleźć żadnego miłego sposobu na wyrażenie tego, szczególnie biorąc pod uwagę gadatliwość BF w warunkach warunkowych.
Conor O'Brien,
6

SOGL V0.12 , 38 bajtów

6«╝5╚@┼╬⁷7«8ž'⁸3L╚ž92L╚╬5L«26«╝╬5:21╬5

Wypróbuj tutaj!

dzaima
źródło
Teraz czekamy na węgiel drzewny: P
Mr. Xcoder
@ Mr.Xcoder, jeśli mnie to nie bije, nie wiem.
dzaima,
4

Bubblegum , 77 76 bajtów

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

Wypróbuj online!

Próg gumy do żucia. : P

całkowicie ludzki
źródło
3

/// , 166 bajtów

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

Wypróbuj online!

Conor O'Brien
źródło
3

C (gcc) , 377 bajtów

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

Wypróbuj online!

cleblanc
źródło
356 bajtów
ceilingcat
3

Python 2 , 197 bajtów

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

Wypróbuj online!

Wykorzystuje logikę z odpowiedzi JS.

całkowicie ludzki
źródło
191 bajtów
movatica
3

Haskell, 161 160 bajtów

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

Wypróbuj online!

Spacje przed \\są kodowane jako małe litery, a przedtem //jako wielkie litery, gdzie liczba spacji to wartość ASCII minus 96 (lub 64). Zero spacji to `/ @. Przestrzenie każdej linii są przechowywane w odwrotnej kolejności, ponieważ są one zużywane przez prawy krotnie.

nimi
źródło
2

Węgiel drzewny , 51 bajtów

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

Wypróbuj online!

Węgiel , 50 bajtów

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

Wypróbuj online!

Stephen
źródło
2

Węgiel , 50 31 bajtów

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

Wypróbuj online! Link jest do pełnej wersji.

Próbowałem. (Ponadto zaznaczę, że zrobiłem to całkowicie sam, nawet jeśli wygląda nieco podobnie do drugiego. [Shiz, zrobiłem to ponownie. Nawiasem mówiąc, nadal jest inaczej.: P])

całkowicie ludzki
źródło
1

Galaretka , 65 bajtów

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

Wypróbuj online!

Zwraca listę znaków. Łącze TIO ma stopkę do drukowania na osobnych liniach.

Erik the Outgolfer
źródło
1

PHP, 186 bajtów:

Obie wersje wymagają PHP 5.5 lub nowszego.

Uruchom je -nrlub wypróbuj online


Kompresja przestrzeni daje najkrótszą alternatywę:

(podwójny ukośnik odwzorowany na 0, podwójny ukośnik na f, sapresy skompresowane do cyfr)

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 wyświetla ostrzeżenia; zastąpić +$cz $c>0do naprawienia.


bitmapa bazowa 64 ( 187 bajtów ):

(odwzorowane spacje na 00, nowa linia na 01, podwójny ukośnik odwrotny 10i podwójny ukośnik na 11, a następnie połączenie 3 „pikseli” każdy w jeden znak, poprzedzone 1i przekonwertowane z pliku binarnego na 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];

(pierwszy podział linii dla wygody czytania; drugi jest niezbędny)

Tytus
źródło
1

Bubblegum , 74 bajty

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

Wypróbuj online!

ovs
źródło
1

PowerShell , 221 220 bajtów

$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','\\'

Wypróbuj online!

Podejście dość naiwne ( i 50 bajtów gorsze niż odpowiedź JS, kulenie się ). Czy ktoś zna sposób wykonywania wielu -replaces w PowerShell?

-1 bajt dzięki Veskah.

AdmBorkBork
źródło
1

Python 2 , 180 bajtów

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

Wypróbuj online!

Kodowanie to podstawa 36:

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

i inaczej,

n => (n-2) spaces
Chas Brown
źródło
1

C # (interaktywny kompilator Visual C #) , 122 bajty (121 znaków)

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

Wypróbuj online!

Wyjaśnienie

Każda część logo to tylko 0+ spacji z albo a \\lub //na końcu, a może nowa linia. Jest ich 52 . Następnie kodujemy każdy segment w znak:

  • Weź liczbę spacji w każdym segmencie, a następnie dodaj 2 do tej liczby.

  • Bit przesuń liczbę w lewo 2 razy.

  • Jeśli segment kończy się //, bit-LUB LUB liczba po jednym.

  • Jeśli segment kończy się nową linią, bitowo LUB liczbę o dwa.

  • Weź numer i wrzuć go do postaci.

  • Powtórz dla każdego segmentu.

Oto wszystkie 52 segmenty i wartość liczbowa, w którą kodują:

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
Wcielenie ignorancji
źródło
j>>2->j/4
Tylko ASCII,
124 . myślę też, że możesz wstawić bajty zerowe, jeśli ręcznie tworzysz adres URL
tylko ASCII
w wyjaśnieniu: przesunięcie bitowe w lewo , nie w prawo. również lista ciągów jest dostępna tylko wtedy, gdy zwrócisz każdy wiersz jako własny ciąg ... będziesz potrzebować string.Concattutaj, aby był ważny ...
Tylko ASCII
zamknij , to 143, podczas gdy normalna to 141
tylko ASCII
@ Tylko ASCII Jestem pewien, że zwracanie listy takich ciągów jest dozwolone, ale na wszelki wypadek dodam inne rozwiązanie. Czy jest to jednak ważne: tio.run
of Ignorance
0

C (gcc) , 144 140 139 bajtów

-4 bajty dzięki ceilingcat .

Każdy znak w ciągu koduje liczbę spacji, które należy zastosować przed określonym ciągiem. Jeśli jest to mała litera (lub backtick), to ciąg to „\”, a jeśli wielkie lub @, to „//”. Spacja oznacza nowy wiersz.

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

Wypróbuj online!

gastropner
źródło