Đi bộ Tham gia! - Logo của Alan Walker


13

Bạn có thể biết Alan Walker từ bài hát nổi tiếng của mình Faded. Bây giờ "tín đồ" của anh ta được gọi là Walkers và họ có logo, đây là phiên bản đơn giản hóa:

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

Mục tiêu của thử thách này là in logo này.

QUY TẮC:

  1. Nếu bạn trả về danh sách các chuỗi từ một chức năng theo tiêu chuẩn meta, vui lòng cung cấp chân trang in nó ra màn hình.
  2. Tất cả các ký tự của logo trên phải ở đó. Không có phím tắt!
  3. Số byte ngắn nhất sẽ thắng!

có thể có thêm khoảng trắng ở cuối mỗi dòng (vì chúng không thay đổi giao diện của đầu ra)? Có thể có hàng đầu / nối thêm mới?
dzaima

@dzaima, vâng, bạn có thể.
Đạt

+1 cho Alan Walker !!
Đánh giá cao hoạt động

Câu trả lời:


14

Than , 31 30 29 27 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Đáng buồn thay Copy, không làm những gì tôi muốn trong trường hợp này, vì vậy tôi phải lặp lại. Giải trình:

F²«Jι⁰

Vẽ mọi thứ hai lần, nhưng với con trỏ bắt đầu một ký tự bên phải lần thứ hai.

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

Vẽ W chính từ phải sang trái, nhưng để con trỏ gần chữ V. ngược.

   ↙↗χ↘↘¹²

Vẽ chữ V. ngược


Bạn "chỉ" đánh bại các giải pháp ngây thơ bằng 20 byte: P
Stephen

1
@StepHen Tiết kiệm 46% không phải là xấu do chi phí thiết lập vòng lặp ngay từ đầu ...
Neil

Là phản chiếu chỉ không ngắn hơn cho điều này?
Stephen

5
@StepHen Sửa chữa chi phí bất cân xứng quá nhiều. Điều tốt nhất tôi có thể làm là 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>

Làm sao?

Logo về cơ bản bao gồm các nhóm không gian theo sau bởi hoặc //hoặc \\nguồn cấp dữ liệu.

Không gian và mẫu kết thúc được mã hóa bằng các giá trị cơ sở 36:

  • Bit quan trọng nhất cho mẫu kết thúc: 0for //, 1for \\.
  • Tất cả các bit khác cho số lượng khoảng trắng trước mẫu kết thúc.

Mọi thứ có thể được mã hóa theo cách này với một chữ số cơ bản 36 trừ dòng cuối cùng bao gồm 30 khoảng trắng theo sau \\, dẫn đến 30 * 2 + 1 = 61 = 1ptrong cơ sở-36. Điều này pnên được hiểu là 12 khoảng trắng theo sau \\nhưng mẫu này không xuất hiện ở bất cứ đâu. Vì vậy, chúng ta chỉ cần xử lý trường hợp đặc biệt này với chi phí là 2 byte bổ sung trong biểu thức chính quy:/.p?/ .


Phiên bản đầu tiên, 186 byte

NB: Cái này đã được gửi trước khi cập nhật logo.


Chơi golf độc đáo. Tự mình đâm vào đây trước khi kiểm tra câu trả lời; kết thúc với một cái gì đó tương tự như phiên bản 172 byte của bạn.
Xù xì

7

Brainfuck , 579 byte

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

Hãy thử trực tuyến!

Tạo các hằng số 47 92 32 10trong bộ nhớ, sau đó chọn và xuất chúng khi thích hợp.


Tôi khá chắc chắn rằng điều này có thể được đánh xuống, đặc biệt là phần cuối cùng
Stan Strum

@StanStrum Hãy thoải mái cho nó một shot. Tôi đã cố gắng nhưng không thể tìm thấy bất kỳ cách hay nào để diễn đạt nó, đặc biệt là tính dài dòng của BF trong các điều kiện.
Conor O'Brien


4

Bong bóng , 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...>

Hãy thử trực tuyến!

Ngưỡng bong bóng. : P



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

Hãy thử trực tuyến!




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

Hãy thử trực tuyến!

Các dấu cách trước \\được mã hóa thành chữ cái viết thường và trước //là chữ in hoa trong đó số lượng khoảng trắng là giá trị ASCII trừ 96 (hoặc 64). Không gian là `/ @. Các không gian của mỗi dòng được lưu theo thứ tự ngược lại, bởi vì chúng được tiêu thụ theo một nếp gấp bên phải.


2

Than , 51 byte

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

Hãy thử trực tuyến!

Than , 50 byte

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

Hãy thử trực tuyến!


2

Than , 50 31 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng.

Tôi đã thử. (Ngoài ra, tôi sẽ chỉ ra rằng tôi đã tự mình làm điều này hoàn toàn, ngay cả khi nó trông hơi giống với cái kia.



1

PHP, 186 byte:

Cả hai phiên bản đều yêu cầu PHP 5.5 trở lên.

Chạy với -nrhoặc thử chúng trực tuyến


nén không gian cho sự thay thế ngắn nhất:

(dấu gạch chéo kép được ánh xạ tới 0, dấu gạch chéo kép f, sapces được nén thành chữ số)

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 mang lại cảnh báo; thay thế +$cvới $c>0việc sửa chữa.


bitmap cơ sở 64 ( 187 byte ):

(ánh xạ không gian tới 00, dòng mới đến 01, dấu gạch chéo ngược kép 10và dấu gạch chéo kép 11, sau đó ghép 3 "pixel" mỗi ký tự thành một ký tự, được thêm vào 1và chuyển đổi từ nhị phân sang 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];

(ngắt dòng đầu tiên để đọc thuận tiện; cái khác là cần thiết)


1

Bong bóng , 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                 ..........

Hãy thử trực tuyến!


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

Hãy thử trực tuyến!

Cách tiếp cận khá ngây thơ ( và 50 byte tệ hơn câu trả lời của JS, co rúm ). Bất cứ ai cũng biết một cách để làm nhiều -replaces trong PowerShell?

-1 byte nhờ Veskah.



@Veskah Tiết kiệm byte đơn giản. Cảm ơn!
admBorkBork 14/03/19

1

Python 2 , 180 byte

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

Hãy thử trực tuyến!

Mã hóa là cơ sở 36:

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

và nếu không,

n => (n-2) spaces

1

C # (Trình biên dịch tương tác Visual C #) , 122 byte (121 ký tự)

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

Hãy thử trực tuyến!

Giải trình

Mỗi phần của logo chỉ là hơn 0 khoảng trắng có a \\hoặc a //ở cuối, cộng với có thể là một dòng mới. Có 52 trong số này. Sau đó chúng tôi mã hóa từng phân đoạn thành một ký tự:

  • Lấy số lượng khoảng trắng trong mỗi phân đoạn, sau đó thêm 2 vào số đó.

  • Bit dịch chuyển số sang trái 2 lần.

  • Nếu đoạn kết thúc bằng //, bit khôn ngoan HOẶC số một.

  • Nếu đoạn kết thúc bằng một dòng mới, bit-khôn ngoan HOẶC số lượng bằng hai.

  • Lấy số, và đúc nó thành một char.

  • Lặp lại cho từng phân khúc.

Dưới đây là tất cả 52 phân đoạn và giá trị số mà chúng mã hóa thành:

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 chỉ

124 . Ngoài ra tôi nghĩ bạn có thể đặt byte rỗng vào nếu bạn tự tạo URL
chỉ có ASCII

trong phần giải thích: bitshift trái , không phải. còn danh sách các chuỗi chỉ khi bạn trả về mỗi dòng dưới dạng chuỗi riêng của nó ... bạn sẽ cần string.Concatở đây để chuỗi đó hợp lệ ...
ASCII

đóng , đây là 143 trong khi bình thường là 141
ASCII - chỉ

Chỉ có ASCII Tôi chắc chắn trả lại danh sách các chuỗi như thế này được cho phép, nhưng tôi sẽ thêm một giải pháp khác trong trường hợp này. Tuy nhiên, điều này có hợp lệ không: tio.run/##Sy7WTS7O/ Kẻ
Hiện thân của sự thiếu hiểu biết

0

C (gcc) , 144 140 139 byte

-4 byte nhờ vào trần nhà .

Mỗi ký tự trong chuỗi mã hóa một số khoảng trắng để sử dụng trước một chuỗi nhất định. Nếu đó là chữ cái viết thường (hoặc backtick), thì chuỗi là "\" và nếu viết hoa hoặc @, thì đó là "//". Một không gian biểu thị một dòng mới.

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

Hãy thử trực tuyến!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.