К сожалению, один из величайших авторов комиксов скончался вчера днем. Многие голливудские звезды, музыканты, актеры и многие другие люди отдают дань уважения этому замечательному писателю, поэтому мы должны что-то сделать.
Вызов
Распечатать логотип мстителей
Примечание. Вместо # можно использовать любой другой символ, кроме пробела; в то время как вы должны использовать пробел для пробела
В ASCII-искусстве
######
###############
##### ##########
#### ####### ####
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### ########### ###
### ########### ###
### #### ### ###
### ### ### ###
#### #### ####
######## ######
#################
###
Необязательный
Кто был (по вашему мнению) его величайшим героем и злодеем во всей удивительной вселенной?
Применяются стандартные правила игры в гольф
code-golf
ascii-art
kolmogorov-complexity
Луис Фелипе Де Иисус Муньос
источник
источник
Ответы:
Желе ,
625958 байтСпасибо @JonathanAllan за отыгрывание 1 байта!
Попробуйте онлайн!
Как это работает
является целочисленным литералом с целым числом 250, в котором символы кодовой страницы Jelly используются в качестве цифр.
Буквального кодирует целое число , который преобразует в двенадцатеричной, получая .10250938842396786963034911279002199266186481794751691439873548591280332406943905758890346943197901909163 30 б 620 б 40 б в 54 64771433841333139413468423468423467433467433466 б 466 б 465453465363431424 б 43896860 б в 3 1230 b 620 b 40 b a 54 a 64771433841333139413468423468423467433467433466 b 466 b 465453465363431424 b 43896860 b a 312
b12
Есть несколько нулей, потому что 14 пробелов (например) кодируются как 3 пробела, 0 хешей и 11 пробелов. Таким образом, база остается небольшой (самый большой цикл состоит из 17 хэшей), не добавляя никакой дополнительной логики в декодер.
Ė
(перечислить) префикс каждого 12-значного числа основывается на его 1-значном индексе, а затемŒṙ
выполняет декодирование по длине серии.Теперь для каждого целого числа в результирующем массиве
Ḃ
извлекается младший значащий бит, затемa⁶
(И пробел) заменяет единицы пробелами, оставляя нули без изменений.Наконец,
s27
разбивает массив неформатированных символов на куски длиной 27, которыеY
разделяются переводами строк.источник
R ,
198,173,163,157,144, 142 байтаПопробуйте онлайн!
Также
R
отличием великого Стэна.Заметки :
#
мы использовали символ,4
потому что экономит 2 байта и:4
кажется мини "наклонным"A
)Пояснение :
Применение кодировки длины выполнения (
rle
функция) к символам строки (исключая'\n'
) возвращает 88 повторений чередования<space>,<hash>,<space>,<hash>,<space>,<hash>...
.88 повторений - все значения в диапазоне,
[1,17]
следовательно, суммируя,64
мы получаем кодовые точки букв,[A...Q]
получающих строку:"NFMOJEDJFDGGADCCHDACCCACIDACDFHDBCDFHDBCDFGDCCDFGDCCDFFKDFFKDFEDECDFECFCDCADBDKDCHIFHQJC"
Следовательно, код в основном выполняет противоположные операции:
источник
#
, использование0
вместо"#"
должно сохранить еще 2 байта. @ J. Делай, что может быть лучше для вашего gzip.Bubblegum ,
71666564 байтаСпасибо @ovs за вывод 1 байта!
Попробуйте онлайн!
источник
#
на!
.Python 2, 129 байт
Попробуйте онлайн!
источник
\n
сжатой строки.Древесный уголь ,
716867 байтПопробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Выведите половину круга.
Отразите это и нарисуйте внизу.
Нарисуйте левую руку и перекладину А.
Нарисуйте правую руку А.
Измените все символы на
#
s.источник
C (gcc) ,
244243242 байтаПопробуйте онлайн!
-1 Спасибо Питеру Кордесу
-1 Благодаря потолку
Использует сжатие битов.
Объяснение:
Цель состоит в том, чтобы напечатать набор чисел в двоичном виде, используя пробел и # в качестве цифр, которые представляют логотип. Немного магии bash преобразует логотип в бинарные маски:
Это приводит к тому, что двоичные числа:
В середине есть очевидный паттерн, где каждая строка содержит
### ### ###
Мы можем сэкономить некоторое пространство, сжимая эту среднюю часть, основываясь на сохранении этого шаблона и обращаясь к нему. Кроме того, все эти строки просто добавляют некоторые элементы слева от средней части, поэтому мы создаем
z
макрос, который принимает??????????????
и преобразует его в###??????????????### ###
. Это включает сдвиг битов влево на 10 и ИЛИ с двоичным кодом этого шаблона, который равен 117441415.Теперь мы можем более легко понять код:
источник
x?y:0
быть замененx&&y
или оператор приоритета не работает? Может быть,&
вместо 3,
-х вызовов функций, потому что&
имеет более высокий приоритет, чем&&
или,
( en.cppreference.com/w/c/language/operator_precedence ). Или не потому, что,
обеспечивает только точку последовательности для печати по сравнению с рекурсией, чтобы избежать неопределенного поведения.&&
из-за приоритета, но&
и не закорачивает. Пока что я не нашел более короткой альтернативы, хотя я не исключил бы ее.&
или|
или^
заменить,
( потому что они не закорачивают) и&&
заменить?
(потому что это делает). Нравится_<19 && b() & puts() & main(_+1);
(пробелы добавлены для удобства чтения). Порядок оценки не определен, что может фактически привести к неопределенному поведению из-за непоследовательных побочных эффектов наstdout
en.cppreference.com/w/c/language/eval_order , но на практике любой данный компилятор выберет некоторый порядок для данного набора target + опции.T-SQL,
341338 байтПервые 4 переноса строки предназначены только для удобства чтения, последний разрыв строки является частью строкового литерала.
Как и в случае с моей данью Адаму Весту , я вручную закодировал длинную строку и сделал следующие замены:
*7
заменяется+REPLICATE('#',7)
$4
заменяется+SPACE(4)
&
заменяется разрывом строки внутри кавычекЭто приводит к массивной командной строке SQL:
Который при запуске выдает необходимый результат.
Длинный, но все же лучше, чем мое лучшее решение на основе множеств ( 463 байта ):
источник
CHAR(8000)
вместоVARCHAR(max)
(огромная команда - 1453 байта)CHAR(2E3)
но мне это не понравилось. Я также сохранил байт, используя вместо него литерал разрыва строкиCHAR(13)
.Холст ,
747371 байтПопробуй это здесь!
источник
JavaScript (ES6),
173170 байтПопробуйте онлайн!
Node.js , 163 байта
При условии, что массив строк является допустимым выводом:
Попробуйте онлайн!
источник
05AB1E ,
1018864 байта-24 байта путем создания порта @ Dennis ♦ 'Jelly answer .
Попробуйте онлайн.
Объяснение:
Посмотрите этот совет 05AB1E (разделы « Как сжимать большие целые числа?» И « Как сжимать целочисленные списки?» ), Чтобы понять, как работает сжатие целых чисел и списков.
источник
•∍ΔÎë,½=bOÅ.âαUΔ'òõƶαÔγλ#xÆ]~”FbćÁ˜Ð”wнQ_wā©•12вDg„ #s∍S×J27ô»
заменив„#
иεN>yи}˜è
наDg„ #s∍S×
C (gcc) ,
174168164160 байт-6 байт благодаря Денису.
Попробуйте онлайн!
источник
/// , 170 байт
Попробуйте онлайн!
источник
Баш ,
192176 байтПопробуйте онлайн!
-16 благодаря манатворке
Это похоже на мой ответ C, за исключением того, что он просто использует необработанное сжатие base-16 и передает его через bc, а затем использует tr для преобразования 1 в # и 0 в пробел. Каждый ряд имеет 1 добавленный к нему и удаленный из него, чтобы сохранить выравнивание.
К сожалению
dc
короче чемbc
.источник
^
. Но даже лучше, используйтеcut -c2-
вместоsed
части.echo
и даже короче сdc
вместоbc
: Попробуйте онлайн!echo
, но давай -dc
для Стэна Ли ... ты, должно быть, шутишь;)Haskell,
170163 байтаРедактировать: -7 байт благодаря @ Örjan Johansen
Попробуйте онлайн!
Пробелы кодируются в верхнем регистре (длина:
Z
до символа), хэш-символы - в нижнем регистре (длина:a
до символа), а последние три#
каждой строки плюс символ новой строки в качестве пробела. Функцияm
декодирует его.источник
"###\n"
.Perl 6 ,
136112 байтПопробуйте онлайн!
Разбирает базовое число 128 из порядковых значений сжатой строки, преобразует в основание 2 и заменяет
1
s пробелами. Это использует нули в качестве главного героя. Строка имеет как 9 нулевых байтов, что было сукой набрать в TIO. Я бы использовал базу 127 для того же количества байтов, но без нулей, но у него есть возврат каретки, который, кажется, невозможно отличить от новой строки:(
Объяснение:
источник
J ,
130128 байтПопробуйте онлайн!
Начальное решение
J 164 байта
Попробуйте онлайн!
источник
PHP ,
286212209208 байтПопробуйте онлайн!
источник
Perl 5 , 181 байт
Попробуйте онлайн!
источник
MATLAB : 144 байта
Попробуйте онлайн! (Технически в октаве)
Объяснение:
При этом используется та же стратегия, что и у digEmAll в R, только с синтаксисом MATLAB. Основное отличие состоит в том, что MATLAB имеет автоматическое преобразование из символов в целые числа.
источник
C # (.NET Core) , 199 байт
Попробуйте онлайн!
Использует тот же подход, что и мое решение в дань уважения Адаму Весту .
источник
Deadfish ~ ,
726723 байта-3 байта благодаря @squid
Попробуйте онлайн!
Никогда не видя и не читая ничего Marvel и полагаясь только на спойлеры, кажется, что Танос - лучший.
источник
Машина Тьюринга, но гораздо хуже - 16913 байт
Сделано с помощью генератора программ ASCII_only
источник
выкачать, 79 байт
eJyVkcsJADAIQ ++ ZIpD9dyxUqrGUgjlpHvglXdqCJymk1yEiaRXEIOXzuBHCiKObReUxUzYaMdt2wmTBg / FmNXndgLRbNvL7ifsLfMw6iQ ==
источник
deflate
язык, так как это выглядит как строка base64Brainf ***,
656652605 байтЦикл в начале запускает ленту
Затем остальная часть кода выводит эти символы.
(-47 байт благодаря ортоплексу)
источник
T-SQL, 244 байта
Golfed:
Ungolfed:
Попробуй онлайн версию без игры в гольф
источник