Ваша задача - написать программу, которая печатает следующие четыре стиха, извлеченные из текстов песни The Beatles "Hey Jude" (© Sony / ATV Music Publishing LLC):
Hey Jude, don't make it bad\n
Take a sad song and make it better\n
Remember to let her into your heart\n
Then you can start to make it better\n
\n
Hey Jude, don't be afraid\n
You were made to go out and get her\n
The minute you let her under your skin\n
Then you begin to make it better\n
\n
Hey Jude, don't let me down\n
You have found her, now go and get her\n
Remember to let her into your heart\n
Then you can start to make it better\n
\n
Hey Jude, don't make it bad\n
Take a sad song and make it better\n
Remember to let her under your skin\n
Then you'll begin to make it\n
\n
НО
Единственный вход, который вам разрешено использовать для построения этих четырех стихов, - это список токенов:
"Hey Jude, don't"
" make it bad"
" be afraid"
" let me down"
"Take a sad song and make it better"
"You"
" were made to go out"
" and get her"
" have found her, now go"
"Remember to"
"The minute you"
" let her"
" into your heart"
" under your skin"
"Then"
" you"
" can start"
"'ll"
" begin"
" to make it"
" better"
Обратите внимание, что некоторым токенам предшествует пробел, и заключенные в кавычки не являются частью токенов. Вы можете использовать любой формат списка и изменить порядок расположения токенов.
Ваш сгенерированный вывод должен точно соответствовать вышеприведенным четырем стихам. Обратите внимание, что \n
используется для новых строк, и после каждого стиха добавляется дополнительная новая строка . Вы можете использовать этот файл (MD5:) 4551829c84a370fc5e6eb1d5c854cbec
для проверки вашего вывода.
Вы можете использовать следующую схему железной дороги, чтобы понять структуру стихов (каждый элемент представляет токен):
Самый короткий код в байтах побеждает. Удачного игры в гольф.
Ответы:
Желе , 42 байта
Попробуйте онлайн!
Жесткая версия.
Входные данные:
источник
JavaScript (ES6), 108 байт
Попробуйте онлайн!
Альтернативная версия, 114 байт
Немного лучшее сжатие, но, к сожалению, разрушенный большим кодом декомпрессии.
Попробуйте онлайн!
источник
m
флаг не требуется для литералов многострочных шаблонов. Интересный.Ruby +
-p
,177136120118115109 байт (полная программа)Попробуйте онлайн!
-41 байт: переключиться с использования переменных на использование символов в качестве индексов массива
-16 байт: переключиться на более удобный формат ввода
-1 байт: между
puts
и"abv...
-1 байт: использовать
$/
глобальный вместо?\n
литерала-3 байта: использовать
gsub(/./)
вместо.chars.map
-6 байт: вызов
-p
и использование$_
. Спасибо, Павел !Каждый символ в магической строке представляет индекс во входном массиве.
Мне нужна переменная,z
чтобы я читал из STDIN только один раз.Я мог бы сэкономить некоторую стоимость от ввода-вывода, написав лямбду, принимающую массив и возвращающую строку. Это требует дополнительного
v
в конце, потому что он не получает бесплатный перевод строки-p
.Рубин ,
162110108105 байт (функция)Попробуйте онлайн!
источник
String#unpack
чтобы быть короче, чем.chars
с.ord-97
, но может быть один.-p
и$_
Java 8,
241233141140138 байтОбъяснение:
Попробуйте онлайн.
Это в основном преобразует символы ASCII
0
(48) черезE
(69) к 0-индексированных индексов0
через21
сi-48
.источник
Python 3,
162147144142138127 байтПопробуйте онлайн
Отдельное спасибо пользователю 202729 и Павлу .
источник
05AB1E ,
142686665 байтПопробуйте онлайн!
-74 байта благодаря EriktheOutgolfer, используя сжатую строку base-255.
-2 байта путем обращения сжатой строки, чтобы избежать объединения трех нулей
-1 байт благодаря EriktheOutgolfer, путем переключения двух элементов в массиве ввода, чтобы избежать ведущих 0, и , таким образом , удаляя обратный R команду.
источник
Сетчатка 0.8.2 , 115 байт
Попробуйте онлайн! Принимает ввод как разделенный строкой список строк.
источник
Stax ,
5958 байтЗапустите и отладьте его
Соответствующее представление ascii той же программы таково.
`ORIpY$T&z{m6Y=>mR)_ .VQ)eN70e[:0yO8j$^RN[ Bp{IN/$|"3^;G#^&lv!`
сжатый литерал со значением"CDBGBLNOBQRSVWBBCEBHIJBMNPBQRUVWBBCFBHKJBLNOBQRSVWBBCDBGBLNPBQRTUVBB"
. Символы представляют индексы в таблице токенов. Эта программа добавляет еще один токен для представления новой строки. Это не во входе, но добавлено во время выполнения. Остальная часть программы работает следующим образом.источник
Функция C (gcc), 139 байт
Попробуйте онлайн!
источник
printf
вfor
Красный , 133 байта
Попробуйте онлайн!
Ungolfed
t
блок со списком токеновисточник
D 166 байт
Попробуйте онлайн!
источник
Mathematica, 102 байта
Чистая функция. Принимает список строк в качестве входных данных и возвращает строку в качестве выходных данных. Просто кодирует все индексы токенов, аналогично другим ответам.
источник
Рубин , 97 байт
Попробуйте онлайн!
Сохранено несколько байтов с другим подходом к большинству других ответов.
Количество возможных токенов в каждой строке следующее
Волшебная строка содержит по одному символу на строку, что интерпретируется как растровое изображение, из которого до 7 доступных токенов должно быть напечатано для каждой из 16 строк песни.
a[i%7-1+i%28/7*5]
выполняет итерацию по токенам каждой строки, сдвигаясь на 5 для каждой новой строки и со смещением 1, чтобы учесть тот факт, что в первой строке есть только 4 токена.Для строк 1-3 используются только биты от 64 до 4 - без использования битов 2 и 1 можно избежать печати токенов из следующей строки. для строки 4 используются все 7 битов от 64 до 1.
источник