Прогулки приєднуйтесь! - логотип Алана Уокера


13

Ви можете знати Алана Уокера з його колись популярної пісні «Зів’ялі». Зараз його "послідовники" називаються Уокерами, і вони мають логотип, ось спрощена версія:

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

Мета цього завдання - надрукувати цей логотип.

ПРАВИЛА:

  1. Якщо ви повертаєте список рядків з функції, відповідно до мета-стандартів, надайте колонтитул, який друкує його на екран.
  2. Усі символи вищевказаного логотипу повинні бути там. Ніяких ярликів!
  3. Найменша кількість байтів виграє!

Чи можуть бути зайві пробіли в кінці кожного рядка (оскільки вони не змінюють, як виглядає вихід)? Чи можуть бути провідні / додані нові рядки?
dzaima

@dzaima, так можна.
Дат

+1 для Алана Уокера !!
HighlyRadioactive

Відповіді:


14

Вугілля , 31 30 29 27 байт

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

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. На жаль, Copyв цьому випадку не робиться того, що я хочу, тому мені доведеться замість цього циклічно. Пояснення:

F²«Jι⁰

Намалюйте все двічі, але курсор починаючи один символ праворуч вдруге.

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

Намалюйте головний W справа наліво, а курсор залиште біля перевернутого В.

   ↙↗χ↘↘¹²

Намалюйте перевернутий В.


Ви "лише" побили наївні рішення на 20 байт: P
Стівен

1
@StepHen Економія 46% не є поганою, враховуючи в першу чергу накладення циклу ...
Ніл

Хіба дзеркальне відображення для цього просто не коротше?
Стівен

5
@StepHen Виправлення асиметрії коштує занадто дорого. Найкраще , що я міг зробити , це 35 байт: F²«Jι⁰↘χ↗↗⁵M⁵↑←↙χ»‖M↥\\¶ \\F²«Jι⁰↖³.
Ніл

13

JavaScript (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>

Як?

Логотип в основному складається з груп пробілів, за якими подається //або \\канал каналів, або рядки.

Проміжки та шаблони закінчень кодуються за допомогою значень base-36:

  • Найменш значущий біт дає закінчення: 0for //,1 for \\.
  • Усі інші біти задають кількість пробілів перед кінцевим шаблоном.

Все може бути закодовано таким чином однією цифрою бази-36, за винятком останнього рядка, який складається з 30 пробілів, а потім \\веде до 30 * 2 + 1 = 61 = 1pв базі-36. Це pслід інтерпретувати як 12 пробілів, за якими слід\\ але цей шаблон ніде не з’являється. Таким чином, ми можемо просто обробити цей окремий випадок ціни 2 додаткових байт в регулярному виразі: /.p?/.


Перша версія, 186 байт

Примітка. Цей файл був поданий до оновлення логотипу.


Чудово гольф. Я сам пробував цей удар, перш ніж перевіряти відповіді; в кінцевому підсумку вийшло щось подібне до вашої версії 172 байтів.
Кудлатий

7

мозковий ебать , 579 байт

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

Спробуйте в Інтернеті!

Генерує константи 47 92 32 10в пам'яті, потім вибирає та виводить їх у відповідних випадках.


Я досить впевнений , що це може бути golfed вниз, особливо остання частина
Стан Strum

@StanStrum Не соромтеся постріляти. Я намагався, але не міг знайти жодного приємного способу висловити це, особливо враховуючи багатослівність BF в умовних умовах.
Conor O'Brien




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

Haskell, 161 160 байт

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). Нульові пробіли є `/ @. Пробіли кожного рядка зберігаються у зворотному порядку, оскільки витрачаються правою складкою.



2

Вугілля деревне , 50 31 байт

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

Спробуйте в Інтернеті! Посилання на багатослівну версію.

Я намагався. (Також я зазначу, що я це робив повністю самостійно, навіть якщо він виглядає дещо схожим на інший. [Shiz, я це зробив ще раз. Це все-таки інакше. До речі.: P])



1

PHP, 186 байт:

Для обох версій потрібен PHP 5.5 або новішої версії.

Запустіть -nrабо спробуйте їх в Інтернеті


стиснення простору дає найкоротшу альтернативу:

(подвійний кут нахилу на карті 0, подвійний fнахил до , сапсис стислий до цифр)

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

Bubblegum , 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 , 221 220 байт

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

Спробуйте в Інтернеті!

Досить наївний підхід ( і на 50 байт гірше, ніж відповідь JS, притулок ). Хтось знає про спосіб зробити кілька -replaces в PowerShell?

-1 байт завдяки Veskah.



@ Веска Проста економія байтів. Спасибі!
AdmBorkBork


1

C # (візуальний інтерактивний компілятор C #) , 122 байти (121 символів)

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

Спробуйте в Інтернеті!

Пояснення

Кожна частина логотипу - це лише 0+ пробілів з а \\або a //в кінці, плюс, можливо, новий рядок. Їх 52 . Потім ми кодуємо кожен сегмент символом:

  • Візьміть кількість пробілів у кожному сегменті, а потім додайте 2 до цього числа.

  • Біт змістіть число вліво 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 . також я думаю, що ви можете ввести нульові байти, якщо ви вручну
лише для ASCII

у поясненні: бітштифт ліворуч , а не праворуч. також список рядків є лише в тому випадку, якщо ви повернете кожен рядок як власний рядок ... вам знадобиться string.Concatтут, щоб він був дійсним ...
лише для ASCII

близько , це 143, тоді як нормальний 141
лише ASCII

@ ASCII тільки я впевнений, що повернення списку таких рядків дозволено, але я додам інше рішення на всякий випадок. Однак чи дійсно це: tio.run/##Sy7WTS7O/…
Втілення

0

C (gcc) , 144 140 139 байт

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

Спробуйте в Інтернеті!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.