Адам Уэст скончался, и я хотел бы почтить его память здесь, на PPCG, хотя я сомневаюсь, что он знал о нашем существовании. В то время как есть много, много разных вещей, которыми этот человек известен, ни одна не более заметна, чем его роль в качестве оригинального бэтмена. Я всегда буду помнить моего отчима, который до сих пор следит за старыми школьными Бэтменом и Робином. Эта задача носит упрощенный характер, совсем не в соответствии со сложным человеком, которым был Адам Вест. Тем не менее, это лучшее, что я мог придумать, так как это самый знаковый образ в карьере человека.
Я хотел опубликовать это раньше, но я ждал, чтобы кто-нибудь придумал что-нибудь получше.
Выведите следующее (с или без завершающих пробелов / новых строк):
* *
**** * * ****
**** ******* ****
****** ******* ******
********* ********* *********
***********************************************
*************************************************
*************************************************
*************************************************
***********************************************
***** ********************* *****
**** *** ***** *** ****
** * *** * **
Это код-гольф , победит самый низкий счетчик байтов.
источник
Ответы:
Желе , 44 байта
Попробуйте онлайн!
Как это устроено
Это числовой литерал. Все символы заменяются их индексами, основанными на 1, в кодовой странице Jelly, результат интерпретируется как биективное целое число base-250, что приводит к
Затем
b25
конвертируем это целое число в основание 25 иo99
заменяем 0 на 99 , получаяJx$
заменяет j- ую основную 25 цифр n на n копий j , даваяТеперь,
ị⁾ *
индексы в пару символов. Индексирование основано на 1 и является модульным, поэтому нечетные числа заменяются пробелами, четные - звездочками. Это даетs25
нарезать результат на куски длиной 25 . Если мы напишем каждый кусок в отдельной строке, мы получимПодпрыгивать атом
ŒB
palindromizes каждый кусок, добавляя перевернутую копию без ее первого символа, получаяНаконец,
Y
вводит фактические переводы строки.источник
“QƤḣọḲ£¿ẆịµñẒṢƊ¬ƒỤ2ỴÐ,ịṁ&Ḅ<ḋsḳn.⁷ṛḃṡ⁾6bḋeṁ’ṃ⁾ *s25ŒBY
было достаточно коротким на 53 байта ...Wordfuck ,
57612686 байтЯ предполагаю, что использование его имени в качестве исходного кода приносит Адаму Весту некоторую честь.
Попробуйте онлайн! (перенесенный мозговой трах)
Адам Вест поет (спасибо @carusocomputing)
источник
Python,
530529528524 байтаисточник
B.pop(0)
немного раздражает. Почему бы не повернуть вспять,B
чтобы вы могли использовать гораздо более эффективный (и более короткий)B.pop()
? Необходимоpop(0)
переместить все оставшиеся элементы списка вниз на один слот. Конечно, это происходит на скорости C, но это все же менее эффективно, чем выталкивание с конца строки.POP
,BIFF
,POW
,OOF
заставили меня выплюнуть то , что я пил на моем мониторе. Спасибо, лол. +1.JavaScript (ES6),
148146 байтдемонстрация
Показать фрагмент кода
источник
Python,
149142 байта7 байтов сохранено благодаря @ PM2Ring
источник
x=''.join(s*int(k,36)for s,k in zip(' *'*3,l))
MATL ,
6159 байтПопробуйте онлайн!
Как это устроено
При этом используются следующие стандартные методы:
1
до11
, поэтому последовательность длин серий сжимается путем преобразования базы из базы11
в базу94
(печатные символы ASCII, за исключением одинарных кавычек, которые необходимо экранировать).источник
[1:12 20 24 99]
, что затрудняет сжатие. Моя лучшая попытка на 60 байтовY|
,? Я не знаю достаточно атласа MATL, чтобы проверить, действительно ли он короче ...[1:24 99]
я удалил один байт . Если я использую[0:24]
(основание 25) Я не знаю , как превратить0
в99
в несколько байтY|
не работает в MATL / Octave, как в Jelly / Python. В последнем0 or 99
дает 99 ...05AB1E , 47 байтов
Попробуйте онлайн!
источник
replace 99 trick
у него (сохранено 4 байта по прямому пути). Тем не менее все еще ищу лучший способ..∞
вместо€û»
(зеркала неявно объединяют списки на новых строках сначала в устаревшей версии, перед применением зеркала). Я также пытался использовать₂в
вместо25в
, но , к сожалению , сжатое целое число , то 1 байт больше, так что он ничего не спасает:•2Ø°×á[1∊Œ)’˜Àå<тIÞ‡p5ÉQ•₂в
.vim,
168156 байтЭто предполагает среду Unix, для
rev
. Я использую довольно простую кодировку (число, символ), где N и A добавляют aи
*
соответственно, а B выполняет копирование и реверс.В реальном файле записи в квадратных скобках заменяются литеральными байтами, которые они представляют.
<C-v>
0x16,<ESC>
0x1b и<CR>
0x0d.Попробуйте онлайн
источник
:nm N a <C-v><esc>
и:nm A a*<C-v><esc>
<C-v>
файл в файле, чем он есть, поэтому я использовал обходной метод, чтобы проверить его{ cat foo.vim; echo ':wq'; } | vim out.txt
. Я не уверен, почему мне не пришло в голову попробовать<C-v><C-v>
вчера.-v
Флаг позволяет использовать VIM ключевые описания (как<C-v>
и этажерка)<NL>
вместо<NEWLINE>
?Древесный уголь ,
69545248 байтПопробуйте онлайн! Ссылка на подробную версию кода. Редактирование: Благодаря @ ASCII-only, сохраняются 4 байта путем переключения с отдельного флага на циклический переход по индексам,
7 байтов с использованиемИ еще 4 байта с использованием алфавита для кодирования длины серии. Сохранено еще 2 байта, потому что⸿
символа (недокументированного?)AtIndex
автоматически принимает по модулю. Сохранено еще 4 байта, потому чтоMap
автоматически создается индексная переменная. Объяснение:Внешний
Map
возвращает массив.Print
обрабатывает это печатая каждый элемент по своей линии, что позволяет избежать необходимости вручнуюJoin
их\n
.Строка кодирует все половинные строки вывода. Чередующиеся буквы относятся к числу
*
s и пробелов (a=0
используется для обработки строки, которая начинается с пробела). Пространство является удобным выбором разделителя, но также хорошо сжимается (x также сжимает до 55 байтов). Каждый ряд обрабатывается отдельно. (Примечание. Девербосификатору не удается удалить разделитель между сжатой и несжатой строкой, в противном случае код будет иметь,
удобочитаемость.)Обведите каждую букву, расширяясь до соответствующего числа
*
s или пробелов. Переменнаяm
является индексом внутреннего цикла для этогоMap
, в то время какl
содержит букву. Затем результатJoin
редактируется в одну строку, используя предопределенную пустую строкуw
.Как только все строки будут напечатаны, отразите все слева, перекрывая средний столбец.
Я попытался обработать символы новой строки, пробелы и звезды в одном цикле, но на самом деле это заняло еще два байта:
источник
Clojure,
833437 байтПочти по определению Clojure никогда не выиграет никаких призов за краткость, но, поскольку я с нетерпением ждал КАЖДУЮ НЕДЕЛЮ в эпизодах ДВУХ (считать их - ДВУХ ) Бэтмена (тот же Bat-time, тот же Bat-канал!), Ясно, что есть нет времени терять!
Скорей, Робин - в Bat-REPL !!!
Версия без гольфа:
Покойся с миром Адам Вест. Как бы нелепы ни были эти шоу, те из нас, кто был детьми, приветствуют вас.
источник
C (gcc) , 191 байт
Попробуйте онлайн!
источник
Различные решения, использующие кодирование длины выполнения, с различными методами кодирования данных RLE.
Python 3,
125121 байтЭта версия использует
bytes
строку для хранения данных.Позвольте
s
быть строкой звезд или пространств. Тогда байтовоеn
кодированиеs
задаетсяPython 2,
133126 байтЭта версия использует буквенное кодирование. Значение буквы определяет длину выходной строки, регистр букв определяет, состоит ли она из пробелов или звездочек.
Мое оригинальное 133-байтовое решение Python 2.
Эта версия использует строки нулевой длины, поэтому она может легко чередоваться между звездой и пробелами.
Просто для удовольствия, вот одна строка, использующая буквенное кодирование.
Python 2, 148 байт
Для еще большего удовольствия, вот образец в игре жизни Конвея, который генерирует версию логотипа Бэтмена. Мне пришлось удвоить каждую строку, чтобы соотношение сторон было примерно таким же, как и у текстовой версии. Эта модель не действительно вычислить логотип (хотя это можно делать вычисление в жизни - это Тьюринг), он просто воспроизводит его из петли памяти, так что я думаю , я не могу отправить его в качестве ввода кода игры в гольфе (хотя Я сделал создать его , используя скрипт Python , который я написал несколько лет назад). ;)
Он закодирован в довольно стандартном формате RLE, который может загружать большинство движков Life. Если у вас нет программы GoL (например, Golly ), вы можете просмотреть ее в действии онлайн с помощью этого онлайн-движка Life , который может импортировать файлы Life RLE. Вот PNG-версия этого шаблона Life , некоторые программы Life (включая Golly) могут загружать шаблоны Life из PNG и различных других форматов графических файлов.
источник
T-SQL,
283 276222 байтаРеализация сжатия GZIP оригинальной строки Бэтмена с помощью метода, размещенного здесь . Это работает только в SQL 2016 и более поздних версиях.
Для более ранних версий SQL используйте мой предыдущий метод ( 276 байт ):
В основном я вручную кодирую гигантскую строку, которая определяет, что печатать дальше, используя следующий метод:
#7
заменяется+REPLICATE('*',7)
$4
заменяется+SPACE(4)
&
заменяется+CHAR(13)
После замены полная строка из 958 символов выглядит так (с разрывами строк в каждой строке в символе Бэтмена:
Который выполняется как динамический SQL, производя следующий вывод:
источник
PHP , 137 байт
Попробуйте онлайн!
PHP , 177 байт
Попробуйте онлайн!
PHP , 179 байт
Попробуйте онлайн!
источник
Ява,
296214 байтGolfed:
Ungolfed:
источник
";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172"
для данных, и вfor(char a:x){a=(int)a-48; [...]
основном это добавление 48 к каждому из чисел и преобразование их в эквивалентный символ ascii. Я верю, что это сэкономит вам 70-80 байт. Также я считаю, что жесткое кодирование данных в lamba также уменьшит количество байтов.boolean b=false;
может бытьboolean b=1<0
, или даже лучше, вы можете использовать,int
а также объединить объявление дляi
в той же строке;).i
в своем цикле for, я думаю, что вы можете использоватьfor(int i=0;i++<a-48;)
какfor
-head.Жвачка , 75
xxd dump:
Попробуйте онлайн .
источник
Coffeescript (282 байта)
Объяснение (используя обычный ES6)
источник
V , 102 байта
Попробуйте онлайн!
HexDump:
Это использует кодировку длины прогона, чтобы сгенерировать следующую половину Бэтмена:
А затем переворачивает и дублирует каждую строку.
источник
Python 2 , 134 байта
Попробуйте онлайн!
Длина серии кодирует каждую строку из левой половины в базе 36. Зеркально отображает ее, чтобы получить полную строку, которая печатается. Ведущие пробелы не кодируются; вместо этого левая половина дополняется до длины 25.
источник
Mathematica 151 байт
Дешево и не креативно. Строка только из встроенной
Compress
команды, используемой для требуемого вывода.Обновить:
Я думаю, что я могу сделать лучше с помощью встроенных
ImportString
\ExportString
функций, но я не вижу, чтобы правильно скопировать и вставить полученные строкиExportString
. НапримерЯ не могу, кажется, скопировать вывод текста из второй строки, чтобы заменить
%
в третьей строке.источник
удар ,
407322 байтаПопробуйте онлайн!
действительно ужасно, нужно больше времени или помощь в игре в гольф. он генерирует выходные данные с 0 по 1 и транслитерирует в конце. Закодированный в шестнадцатеричном формате цифры 0 и 1, при этом последняя цифра 0 для первых двух строк задается как флаг для вывода среднего столбца. Использует printf pressision для ввода цифр или строк для вывода 0 и 1. думаю, что
%.$[0x${X}]C
шаблон можно использовать для игры в гольф.источник
Python 3,
232197183164 байтаЕще один ответ Python. Нет скучного кода сжатия, хотя. Захватывающий код сжатия.
Я использую магическое число 35, потому что таким образом никакие управляющие символы, пробелы или вещи, которые должны быть экранированы, не происходят. Грустно, что мне приходится обрабатывать пространства и звезды отдельно, это стоит мне немного.
Ungolfed:
источник
print
вызов на ту же линию, что иfor
. 2 Если вы используетеbytes
строку, вы можете избавиться от этихord
вызовов. 3 Вы можете заменитьrange
, переместившись через пару итераторов. Вот генератор , который сочетает в себе обе эти идеи:((u-35)*" "+(v-35)*"*"for u,v in zip(*[iter(s)]*2))
. Эти измененияPowerShell, 305 байт,
307 байт,316 байтМожет быть, кто-то еще может помочь мне сократить его дальше, хотя я не могу понять, как, если нет более краткого способа определения ускорителя нестандартного типа.
Изменить: сокращенная версия (спасибо @root). Кодированная строка (кодирование до base64) может быть урезана на восемь позиций массива, и, таким образом, диапазон может быть уменьшен. Не уверен, почему StreamWriter вводит этот раздув в MemoryStream. Понимание основного поведения будет оценено.
Ungolfed:
Код сжатия:
источник
[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')),0,102),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()
$ms.ToArray()
равны 0. Они необходимы?('225','193','82','192','106','2','0','0')
могут быть удалены для созданияH4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbg==
. Я не понимаю, откуда они.Perl 5, 168 байт
Обратите внимание на завершающий пробел в конце только первой строки. Требуется
-M5.01
, что бесплатно.Вероятно, можно играть в гольф немного больше.
источник
LaTeX, 314 байтов
Нежелательная версия с объяснениями:
источник
C # (.NET Core) ,
342 333 328 185175 байтовПопробуйте онлайн!
Много байтов сохранено после изменения подхода. Взяв чертеж в качестве 2D-массива, я рассчитал кодировку RLE по файлам:
Нечетные индексы обозначают
s, а четные -
*
s. Затем я заменил каждое число на печатное представление ASCII (принимая символ «#» за 1), и я получил:Таким образом, алгоритм просто вычисляет чертеж, распаковывая эту строку и добавляя новые строки в нужных местах.
источник
l
переменную, просто используйте ее в цикле напрямую..ToString(i, 2)
->.ToString(i,2)
т.е. удалить пробел.1e10
) представлениями для этих чисел? Этот вызов на самом деле полезен здесь.PowerShell ,
129128 байтовПопробуйте онлайн!
Ungolfed:
Выход:
Основная идея очень проста
Кодирование эмблемы:
Расшифровка (этот скрипт):
Length
разНекоторые умные вещи
½
наs*t
(73 звездочки, 0 пробелов, 74 звездочки).Дополнительно: Scipt для кодирования эмблемы
источник
Mathematica, 271 байт
источник
Braingolf ,
590580579577428423312 байт-111 байт, потому что LeakyNun - бог игры в гольф
Попробуйте онлайн!
Braingolf не хорош в искусстве ASCII, но, черт возьми, я пытался.
Ни в коем случае я не объясняю этот кластер **
источник
/// ,
171166 байт5 байтов сохранено, потому что я использовал
\r\n
в источнике, смеется.Попробуйте онлайн!
Сжатие с использованием последовательных итераций замены «наиболее экономичных» подстрок одним символом. Это почти оптимально, хотя может иметь место одна из двух вещей:
источник