В этой задаче ваша цель будет заключаться в выводе текстов песен Daft Punk's Harder, Better, Faster, Stronger. В частности, выведите этот текст:
Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over
Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder, Make It
Do It Faster, Makes Us
More Than Ever, Hour
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder
Make It Better
Do It Faster Makes Us Stronger
More Than Ever Hour
Our Work Is Never Over
Work It Harder
Do It Faster
More Than Ever
Our Work Is Never Over
Work It Harder
Make It Better
Do It Faster
Makes Us Stronger
More Than Ever
Hour After
Our Work Is Never Over
Ваш вывод может иметь завершающий символ новой строки или конечный пробел.
Встроенные методы сжатия не допускаются.
Это код гольф, поэтому выигрывает самый короткий код!
HQ9+Daft-Punk
это печатает это ...Ответы:
Рубин,
308303Алгоритм
Вступление к песне: возьмите 16 жетонов и напечатайте их дважды (последний содержит дополнительный перевод строки)
Стихи: смешайте жетоны вместе, чтобы получить стихи по 4 жетона на строку в следующем порядке:
В некоторых строках последний токен опущен или заменен на
Af-
. Эти строки отмечены 1 битом в магическом числе 0x744447 = 7619655.В трех строках предпоследний токен также опущен, те где
i%51/48==1
Пунктуация в середине строки может быть одной из
' '
', '
'\n'
. Они закодированы в число 02220010000200100010001001110010001000100010001000100010 (база 3) = "l4yq62lhgnizb0kfu" (база 36).С комментариями
источник
Perl,
316309308307 байтИсточник должен быть закодирован как Latin-1.
объяснение
Мы начинаем с оригинальной лирики. Для краткости предположим, что они
Теперь мы находим короткие подстроки (≥ 3 символа), которые встречаются часто. В этом случае
"Work "
происходит дважды. Мы заменяем каждое вхождение символом 0xE1. Мы также помним замененную строку в массиве:Следующая подстрока,
"Harder"
заменяется на 0xE0.substs
Массив растет к фронту:Это продолжается в общей сложности 34 итерации, пока мы не получим символ 0xC0.
Теперь мы объединяем
substs
использование символаb
(которого нет в тексте) в качестве разделителя. В Perl-кодеsubsts
массив хранится в@c
(используя голое слово,b
чтобы указать,split
где разделить), новые перемешанные тексты включены$e
, и код просто меняет 34 подстановки.источник
Sprects , 302 байта
Я только недавно сделал этот язык, и я решил проверить его с этим испытанием. Он выводит
\n
s вместо новых строк, потому что выводит в HTML, но интерпретатор написан на JavaScript. Из-за этого вот версия с<br>
s вместо\n
s:источник
er
один токен?GolfScript (275 байт)
Это содержит непечатаемые символы ASCII, поэтому вот hexdump:
источник
Рубин - 643 байта
Изменить: Гольф от 899 до 830.
Edit2: 830 -> 755.
Edit3: 755 -> 684.
Edit4: 684 -> 670.
Edit5: 670 -> 643.
Я на самом деле не использовал рубин, так что я уверен, что это может быть решено, это всего лишь попытка:
источник
JAVA 518/490 байт
Редактировать: ненужные 7 байт и добавлена версия Java 6 со статической уловкой {} Edit2: Объяснение раскрыть
java6:
Спасибо @Chris Drost за подсказку со многими "ER" в тексте. Первая строка представляет собой справочную таблицу, вторая часть использует строчные буквы (которые являются последовательным блоком в ascii) в качестве индекса в таблице путем вычитания магического значения a из значения.
Вторая часть состоит из нескольких строк разной длины (короткие - это общие части, разделенные между несколькими стихами), которые собираются в длинную до того, как произойдет циклическое прохождение символов
источник
l
и использовать строку, содержащую все#
непосредственно в цикле for-each, и изменитьchar
цикл for for each наint
:for(int o:r.toCharArray())System.out.print("\n#, #Work#Make#Do#Makes Us#Hard#Bett#Fast#Strong#More#Than#Hour#Our#Nev#Ev#Aft#Af-#Work Is#Ov# #er# It".split("#")[o-97]);
что приводит к -5 байт / 513 байт .JavaScript ES6,
440 байт438 байтЭто куча простых оптимизаций сжатия. Как однострочник:
Это было написано, чтобы быть исполняемым скриптом через
iojs --harmony_arrow_functions file.js
; Вы можете сбритьconsole.log()
накладные расходы в зависимости от значения «вывести текст».объяснение
После выполнения внешнего
.replace()
кода передается кодeval
:почет
.repeat
функция для строк, экономящая 2 байта.источник
b.repeat(7)
вместоb+b+b+b+b+b+b
PowerShell, 659 байт
Создает массив ключевых слов
$a
, затем кодирует текст, используя серию числовых строк, которые отправляются вfor
цикл. Цикл принимает двузначные подстроки, извлекает соответствующее ключевое слово из$a
массива и, наконец,-join''
объединяет его все вместе.Я думаю, что это почти так же хорошо, как этот метод может быть выполнен, так как каждый раз, когда я пытался играть в гольф дальше (например, заменяя
040008
на новую переменную), это оказывалось на пару байт длиннее, потому что длины подстроки было недостаточно, чтобы учитывать все дополнительные цитаты, необходимые. Хотя с тех пор, как я начал, были опубликованы некоторые новые ответы, в которых есть несколько другие методы, которые выглядят так, как будто они могут быть короче в PowerShell (например, использование символов ASCII для кодирования, а не двухзначных, может быть?), Я собираюсь придерживаться этот.Изменить - забыл замену кодировки, которую я использовал:
источник
GolfScript , 251 байт в гольфе
Попробуйте онлайн!
Устранен ненужный
[]
и упрощенный код соответственно. Измененыi
иj
к@
и^
снятию разрешения пробельных символов. Присвоено первое вхождение' '
переменной|
чтобы избежать повторения тех же трех символов.GolfScript , первая рабочая версия 262 байта
Попробуйте онлайн!
Это порт моего ответа Ruby в гольф-скрипт, использующий тот же базовый алгоритм: выведите список токенов дважды, затем перетяните их в стихи и постройте стихи построчно, подбирая особенности каждого из них.
Есть пара отличий. Номер для правильной пунктуации в средней строке находится в основании 81 (удобно, что это делает один печатный символ ascii на стих); и число, кодирующее, печатать или нет последний токен, изменено, потому что
55-i
вместо индекса используется индексi-28
(было обнаружено, что последний вызывает проблемы с отрицательными степенями, порождающими дробные числа вместо усечения в целое число).комментарии
источник
" "
) в переменной. Кроме того, не появляйтесь после присвоения переменной по привычке.51
того, как я пропустил. Я исправлю это позже и, возможно, поищу другие способы, чтобы сократить его. Это моя первая программа для работы со скриптом на гольфе, и мне очень трудно ее читать, когда символы используются в качестве переменных, поэтому я также оставил свою первую рабочую версию размером 262 байта, по крайней мере, на данный момент.Питон - 1056 персонажей
Все еще есть возможности для улучшения с именами переменных, но это начало.
источник
Рубин, 486 байт
источник
Рубин, 483 байта
Работает, кодируя каждое слово, используемое в песне, в одну букву, умножая некоторые строфы, а затем заменяя закодированные буквы фактическим текстом. Запятые, пробелы оставлены как есть.
u
это новая строка.источник
fuc b gud
PHP, 434 байта
Попробуйте онлайн!
источник