워커에 가입하세요! -Alan Walker의 로고


13

그의 인기 노래 Faded에서 Alan Walker를 알 수 있습니다. 이제 그의 "추종자"는 Walkers라고하며 로고가 있습니다. 여기에 간단한 버전이 있습니다.

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

이 도전의 목표는이 로고를 인쇄하는 것입니다.

규칙 :

  1. 메타 표준에 따라 함수에서 문자열 목록을 반환하는 경우 화면에 인쇄하는 바닥 글을 제공하십시오.
  2. 위 로고의 모든 문자가 있어야합니다. 지름길이 없습니다!
  3. 가장 짧은 바이트 수가 이깁니다!

각 줄 끝에 여분의 공백이있을 수 있습니까 (출력 모양이 변경되지 않기 때문에)? 줄 바꿈을 추가하거나 추가 할 수 있습니까?
dzaima

@dzaima, 그렇습니다.
Dat

Alan Walker의 +1 !!
HighlyRadioactive

답변:


14

, 31 30 29 27 바이트

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

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 슬프게도이 Copy경우 원하는 것을하지 않으므로 대신 루프를 사용해야합니다. 설명:

F²«Jι⁰

커서를 두 번 오른쪽으로 한 문자 씩 시작하여 모든 것을 두 번 그립니다.

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

메인 W를 오른쪽에서 왼쪽으로 그리 되 커서를 반전 된 V 근처에 두십시오.

   ↙↗χ↘↘¹²

역 V를 그립니다.


당신은 "순진한"순진한 해결책을 20 바이트로 이겼습니다 : P
Stephen

1
@StepHen 처음에 루프를 설정하는 오버 헤드를 고려하면 46 % 절약은 나쁘지 않습니다 ...
Neil

미러링은 이보다 짧지 않습니까?
Stephen

5
@StepHen 비대칭 비용을 너무 많이 수정하십시오. 내가 할 수있는 최선은 35 바이트였습니다 F²«Jι⁰↘χ↗↗⁵M⁵↑←↙χ»‖M↥\\¶ \\F²«Jι⁰↖³.
Neil

13

자바 스크립트 (ES6), (172) 139 바이트

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>

어떻게?

로고는 기본적으로 공백 그룹과 그 뒤에 //또는 또는 \\줄 바꿈 으로 구성됩니다 .

공백과 끝 패턴은 기준 36 값을 사용하여 인코딩됩니다.

  • 최하위 비트는 종료 패턴을 제공합니다. 0for //, 1for \\.
  • 다른 모든 비트는 끝 패턴 앞의 공백 수를 제공합니다.

다 다음에 30 대 구성의 마지막 행을 제외하고 하나의베이스 (36)이 자리 방법을 부호화 할 수있다 \\(30) * 2 + 1 = 61 = 선도, 1p베이스 (36). 이것은 p공백 12 개로 해석되어야 \\하지만이 패턴은 어디에도 나타나지 않습니다. 따라서 정규 표현식에서 2 바이트의 추가 비용으로이 특별한 경우를 처리 할 수 ​​있습니다 /.p?/.


첫 번째 버전, 186 바이트

주의 : 이것은 로고 업데이트 전에 제출되었습니다.


멋지게 골프를 쳤다. 답을 확인하기 전에 이것에 찔렀습니다. 172 바이트 버전과 비슷한 것으로 끝났습니다.
Shaggy

7

brainfuck , 579 바이트

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

온라인으로 사용해보십시오!

47 92 32 10메모리에 상수 를 생성 한 다음 적절하게 선택하여 출력합니다.


확실이 특히 것을 마지막 부분, 아래 golfed 할 수 있습니다
스탠 스트 럼

@StanStrum 자유롭게 촬영하십시오. 나는 시도했지만 그것을 표현하는 좋은 방법을 찾지 못했습니다. 특히 조건부에서 BF의 장황함을 감안할 때.
코너 오브라이언


4

풍선 껌 , 77 76 바이트

16 진 덤프 :

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

온라인으로 사용해보십시오!

풍선 껌 임계 값. :피



3

C (gcc) , 377 바이트

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

온라인으로 사용해보십시오!




3

하스켈, 161160 바이트

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

온라인으로 사용해보십시오!

공백 \\은 소문자로, //공백은 ASCII 값에서 96 (또는 64)을 뺀 ASCII 문자로 인코딩됩니다 . 제로 공백은 `/ @입니다. 각 줄의 공간은 오른쪽으로 소비되므로 역순으로 저장됩니다.



2

, 50 31 바이트

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

온라인으로 사용해보십시오!링크는 자세한 버전입니다.

나는 노력했다. (또한 다른 것과 다소 비슷해 보이더라도이 작업을 완전히 자체적으로 수행했음을 지적 할 것입니다. [Shiz, 다시 해봤습니다. 그런데 여전히 다릅니다. : P])



1

PHP, 186 바이트 :

두 버전 모두 PHP 5.5 이상이 필요합니다.

온라인으로 실행 -nr하거나 사용해보십시오


공간 압축은 가장 짧은 대안을 제공합니다.

(이중 백 슬래시는로 0, 이중 슬래시는 f, sapces는 숫자로 압축 됨)

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은 경고를 생성합니다. 교체 +$c$c>0수정합니다.


기본 64 인코딩 비트 맵 ( 187 바이트 ) :

(에 공백을을 00, 개행을으로 01, 이중 백 슬래시를10 및 이중 슬래시로11 한 다음 각각 3 개의 "픽셀"을 하나의 문자 1로 연결하고 이진수를 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];

(읽기 편의를위한 첫 번째 줄 바꿈; 다른 하나는 필수)


1

풍선 껌 , 74 바이트

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

온라인으로 사용해보십시오!


1

PowerShell , 221220 바이트

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

온라인으로 사용해보십시오!

상당히 순진한 접근법 ( 그리고 JS 답변보다 50 바이트 나쁘다, cringe ). 누구나 여러 가지 방법을 알고 있습니다.-replace PowerShell에서 있습니까?

Veskah 덕분에 -1 바이트.



@Veskah 간단한 바이트 절약. 감사!
AdmBorkBork 2014 년

1

파이썬 2 , 180 바이트

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

온라인으로 사용해보십시오!

인코딩은 기본 36입니다.

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

그렇지 않으면

n => (n-2) spaces

1

C # (Visual C # Interactive Compiler) , 122 바이트 (121 자)

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

온라인으로 사용해보십시오!

설명

로고의 각 부분은 끝에 0 \\또는 공백이있는 0 개 이상의 공백과 //개행 문자 일 수 있습니다. 이 중 52 개가 있습니다 . 그런 다음 각 세그먼트를 문자로 인코딩합니다.

  • 각 세그먼트의 공백 수를 취한 다음 해당 숫자에 2를 더하십시오.

  • 숫자를 왼쪽으로 2 번 비트 이동하십시오.

  • 세그먼트가로 끝나는 경우 //비트 단위 OR 숫자 또는 숫자 1

  • 세그먼트가 줄 바꿈으로 끝나는 경우 비트 단위 또는 숫자 2입니다.

  • 숫자를 가져 와서 문자로 캐스트하십시오.

  • 각 세그먼트에 대해 반복하십시오.

다음은 52 개의 세그먼트와 이들이 인코딩 한 숫자 값입니다.

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 전용

124 . 또한 URL을 직접 만들면 널 바이트를 넣을 수 있다고 생각합니다.
ASCII 전용

설명에서 : 오른쪽이 아닌 bitshift left . 또한 문자열 목록은 각 줄을 고유 한 문자열로 반환하는 경우에만 string.Concat유효합니다. 유효한 문자열이 되려면 여기 가 필요 합니다.
ASCII 전용

close , 이것은 143이지만 normal은 141
ASCII-only

@ASCII 전용 나는 이와 같은 문자열 목록을 반환하는 것이 허용되지만, 경우에 따라 다른 솔루션을 추가 할 것입니다. 그러나 이것은 유효합니다 : tio.run/##Sy7WTS7O/…
무지의 구현

0

C (GCC) , 144 (140) 139 바이트

ceilingcat 덕분에 -4 바이트 .

문자열의 각 문자는 특정 문자열 앞에 사용할 여러 공백을 인코딩합니다. 소문자 (또는 백틱) 인 경우 문자열은 "\"이며 대문자 또는 @ 인 경우 "//"입니다. 공백은 개행을 나타냅니다.

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

온라인으로 사용해보십시오!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.