Pejalan Kaki Bergabung! - Logo Alan Walker


13

Anda mungkin tahu Alan Walker dari lagu populernya Faded. Sekarang "pengikut" nya disebut Pejalan Kaki dan mereka memiliki logo, ini adalah versi yang disederhanakan:

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

Tujuan dari tantangan ini adalah untuk mencetak logo ini.

ATURAN:

  1. Jika Anda mengembalikan daftar string dari fungsi sesuai standar meta, berikan footer yang mencetaknya ke layar.
  2. Semua karakter dari logo di atas harus ada di sana. Tidak ada jalan pintas!
  3. Jumlah byte terpendek menang!

dapatkah ada ruang ekstra di akhir setiap baris (karena mereka tidak mengubah bagaimana output terlihat)? Mungkinkah ada yang memimpin / menambahkan baris baru?
dzaima

@zaza, ya Anda bisa.
Dat

+1 untuk Alan Walker !!
HighlyRadioactive

Jawaban:


14

Arang , 31 30 29 27 byte

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Sedihnya Copytidak melakukan apa yang saya inginkan dalam kasus ini, jadi saya harus mengulang. Penjelasan:

F²«Jι⁰

Gambar semuanya dua kali, tetapi dengan kursor mulai satu karakter ke kanan untuk kedua kalinya.

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

Gambarlah W utama dari kanan ke kiri, tetapi tinggalkan kursor di dekat V. terbalik

   ↙↗χ↘↘¹²

Gambar V. terbalik


Anda "hanya" mengalahkan solusi naif sebesar 20 byte: P
Stephen

1
@StepHen Penghematan 46% tidak buruk mengingat overhead pengaturan loop di tempat pertama ...
Neil

Apakah mirroring tidak lebih pendek untuk ini?
Stephen

5
@StepHen Memperbaiki biaya asimetri terlalu banyak. Terbaik yang bisa kulakukan adalah 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>

Bagaimana?

Logo pada dasarnya terdiri dari kelompok ruang diikuti oleh salah satu dari keduanya // atau \\dan umpan baris.

Spasi dan pola akhir dikodekan menggunakan nilai basis-36:

  • Bit paling tidak signifikan memberikan pola akhir: 0untuk //,1 untuk \\.
  • Semua bit lainnya memberikan jumlah spasi sebelum pola akhir.

Semuanya dapat dikodekan dengan cara ini dengan satu basis-36 digit kecuali baris terakhir yang terdiri dari 30 spasi diikuti oleh \\, mengarah ke 30 * 2 + 1 = 61 = 1pdi basis-36. Ini pharus ditafsirkan sebagai 12 spasi diikuti \\tetapi pola ini tidak muncul di mana pun. Jadi, kita bisa menangani case khusus ini dengan biaya 2 byte tambahan dalam ekspresi reguler:/.p?/ .


Versi pertama, 186 byte

NB: Yang ini dikirim sebelum pembaruan logo.


Bagus bermain golf. Mengambil bacokan sendiri sebelum memeriksa jawaban; berakhir dengan sesuatu yang mirip dengan versi 172 byte Anda.
Shaggy

7

brainfuck , 579 byte

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

Cobalah online!

Hasilkan konstanta 47 92 32 10dalam memori, lalu pilih dan keluarkan sesuai kebutuhan.


Saya cukup yakin ini bisa diturunkan, terutama bagian terakhir
Stan Strum

@StanStrum Jangan ragu untuk mencobanya. Saya mencoba tetapi tidak bisa menemukan cara yang bagus untuk mengekspresikannya, terutama mengingat kata kerja BF dalam kondisi.
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...>

Cobalah online!

Ambang permen karet. : P


3

/// , 166 byte

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

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

Cobalah online!




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

Cobalah online!

Spasi sebelumnya \\dikodekan sebagai huruf kecil dan sebelumnya //sebagai huruf besar dengan jumlah spasi adalah nilai ASCII minus 96 (atau 64). Nol spasi adalah `/ @. Spasi dari setiap baris disimpan dalam urutan terbalik, karena habis oleh lipatan-kanan.


2

Arang , 51 byte

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

Cobalah online!

Arang , 50 byte

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

Cobalah online!


2

Arang , 50 31 byte

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

Cobalah online! Tautan adalah untuk versi verbose.

Saya mencoba. (Juga, saya akan menunjukkan bahwa saya melakukan ini sepenuhnya sendiri, bahkan jika itu terlihat agak mirip dengan yang lain. [Shiz, saya melakukannya lagi. Ini masih berbeda, omong-omong.: P])


1

Jelly , 65 byte

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

Cobalah online!

Mengembalikan daftar karakter. TIO link memiliki footer untuk mencetak pada garis yang berbeda


1

PHP, 186 byte:

Kedua versi membutuhkan PHP 5.5 atau yang lebih baru.

Jalankan dengan -nratau coba online


kompresi ruang memberikan alternatif terpendek:

(double backslash dipetakan ke 0, double slash to f, sapses dikompresi ke digit)

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 menghasilkan peringatan; ganti +$cdengan $c>0untuk memperbaiki.


base 64 bitmap yang dikodekan ( 187 byte ):

(ruang dipetakan ke 00, baris baru ke 01, garis miring terbalik ganda 10dan garis miring ganda 11, kemudian digabungkan masing-masing 3 "piksel" menjadi satu karakter, ditambahkan 1dan dikonversi dari biner ke 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];

(linebreak pertama untuk kenyamanan membaca; yang lain sangat penting)


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

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

Cobalah online!

Pendekatan yang cukup naif ( dan 50 byte lebih buruk daripada jawaban JS, ngeri ). Adakah yang tahu cara melakukan multiple -replacedi PowerShell?

-1 byte terima kasih kepada Veskah.



@Veskah Penghematan byte sederhana. Terima kasih!
AdmBorkBork

1

Python 2 , 180 byte

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

Cobalah online!

Pengkodean adalah basis 36:

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

dan sebaliknya,

n => (n-2) spaces

1

C # (Visual C # Interactive Compiler) , 122 byte (121 karakter)

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

Cobalah online!

Penjelasan

Setiap bagian dari logo hanya 0+ spasi dengan a \\atau a //di akhir, plus mungkin baris baru. Ada 52 di antaranya. Kami kemudian menyandikan setiap segmen menjadi karakter:

  • Ambil jumlah spasi di setiap segmen, lalu tambahkan 2 ke nomor itu.

  • Bit menggeser nomor ke kiri 2 kali.

  • Jika segmen berakhir dengan //, bit-bijaksana ATAU nomor per satu.

  • Jika segmen berakhir dengan baris baru, bit-bijaksana ATAU nomor dengan dua.

  • Ambil nomornya, dan masukkan ke char.

  • Ulangi untuk setiap segmen.

Berikut adalah semua 52 segmen dan nilai numerik yang disandikan menjadi:

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 . juga saya pikir Anda dapat memasukkan null-byte jika Anda membuat URL
ASCII-only

dalam penjelasan: bitshift left , not right. juga daftar string hanya jika Anda mengembalikan setiap baris sebagai string sendiri ... Anda akan memerlukan di string.Concatsini agar valid ...
ASCII-only

tutup , ini 143 sedangkan normal adalah 141
hanya ASCII

@ ASCII-saja saya cukup yakin mengembalikan daftar string seperti ini diperbolehkan, tetapi saya akan menambahkan solusi lain untuk berjaga-jaga. Namun, apakah ini valid: tio.run/##Sy7WTS7O/…
Perwujudan Ketidaktahuan

0

C (gcc) , 144 140 139 byte

-4 bytes berkat ceilingcat .

Setiap karakter dalam string mengkodekan sejumlah spasi untuk digunakan sebelum string tertentu. Jika huruf kecil (atau backtick), maka string adalah "\", dan jika huruf besar atau @, itu "//". Spasi menandakan baris baru.

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

Cobalah online!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.