... и настоящий гольф для моих друзей по коду.
Это задача, основанная на однолетнем комиксе XKCD, который состоит в основном из тостов (пародии на первые комиксы) по определенной схеме, но с небольшими изменениями.
Ваша задача - написать программу (или функцию), которая будет принимать первую половину любого тоста из комикса (от всего, вплоть до friends
), в качестве входных данных (через stdin или аргумент функции) и выводить (или возвращать) точный текст вторая половина Вам не нужно обрабатывать неверный ввод, применяются стандартные лазейки, самый короткий код в байтах побеждает.
Примеры
Чтобы помочь тем, кто не хочет копировать тосты откуда-либо еще, вот все они, разделенные на вход и выход.
Input: Champagne for my real friends
Output: and real pain for my sham friends!
Input: Pseudopods for my real friends
Output: and real pods for my pseudo-friends!
Input: Petticoats for my real friends
Output: and real coats for my petty friends.
Input: Loosestrife for my real friends
Output: and real strife for my loose friends!
Input: Ladybugs for my real friends
Output: and real bugs for my lady friends!
Input: Single-payer for my real friends
Output: and RealPlayer for my single friends.
Input: Tumbleweeds for my real friends
Output: and real weed for my Tumblr friends!
Input: Fauxhawks for my real friends
Output: and real hawks for my faux friends!
Input: Platonic solids for my real friends
Output: and real solids for my platonic friends!
Single-payer
(вместоSingle-player
).Single-payer
.Ответы:
Сетчатка , 119 байт
Предыдущая версия не правильно управляла пространством в «Платоновых телах», эта работает и короче :)
Попробуйте онлайн!
Это преобразует вход в выход через серию замен.
Самая интересная часть - это замена (вид регулярного гольфа):
Который делает почти всю работу, разбивая первое слово, размещая его части в нужных местах, удаляя лишние пробелы и выстраивая структуру вывода. Для корректной работы в тестовом примере «Tumbleweeds» это зависит от предыдущей замены «eds» -> «ed».
Остальное в основном состоит из замен, которые имеют дело с особыми случаями. Другие интересные части:
Это превращает все, кроме «T» (для Tumblr) в нижний регистр.
Это ставит "." в конце каждого предложения, содержащего слово с буквой «у», несколько букв после «р» (на практике «мелкий» и «плательщик»). Затем ставит "!" в конце всех предложений, заканчивающихся на «s» (все остальные).
источник
platonic
. Предлагаемое исправление: TIO (+5 байт)Python 2,
291269293255247 байтСпасибо
Erik the Outgolfer
за сохранение 22 байта!+24 байта для учета некоторых выходных данных, заканчивающихся
.
вместо!
Простое решение для начала. Проверяет восьмую букву ввода, как предложено в комментариях, и ищет соответствующий вывод в
словаремассив.Попробуйте онлайн!
источник
Single-payer for my real friends
...RealPlayer
это особый случайSOGL , 143 байта
Это использует эту строку в качестве основной части. "|" являются разделителями, а "_" - местозаполнителями, поэтому разделение будет работать правильно.
Пример ввода: «Платоновы тела для моих настоящих друзей» Объяснение:
источник
Python 3 ,
788,403,359396 байтПоследняя версия
Это моя пятая попытка. Мне удалось вдвое уменьшить размер моей оригинальной программы. Теперь оно включает пропущенное "-", и я считаю, что это полное решение. Я все еще подозреваю на громоздкой стороне; но гораздо ближе к цели. У меня была большая помощь . Спасибо за все полезные советы.
Попробуйте онлайн!
Исходное сообщение
Это мой первый пост о код-гольфе, поэтому заранее извиняюсь за свою неуклюжую программу. Не могу понять, как можно создать программу для преобразования «Шампанского» в «боль», «притворство» путем анализа слов. Однако я хотел бы, чтобы кто-то еще решил это. Итак, поскольку мой уровень способностей диктует, что моей программе нужно заранее знать, что «Шампанское» - это «боль», «притворство», казалось, мало смысла в кодировании запроса ввода. В результате я пропустил это и был немного буквальным с моим выводом на печать. Надеюсь, что все в порядке:)
источник
Рёда ,
299292288259 байт4 байта сохраняется благодаря @fergusq для использования
,
вместо..
вpush
отчетностиБайты сохранены благодаря @fergusq, показывающему мне путь
indexOf
Попробуйте онлайн!
Так близко к Питону ... так близко ...
Твой ход, Питон.объяснение
источник
..
на,
.r=indexOf(a[7:8],"noarspekc")
.JavaScript (ES6),
230228221216 байтТест
Показать фрагмент кода
источник
PHP,
202220204203 байтаисточник
Perl,
173168 байтУдаляя символы новой строки и отступы, это становится 173 байтами кода Perl5. Бесстыдно украл первое регулярное выражение из ответа Retina Лео. (У меня было несколько символов дольше)
Для версии perl5> = 5.14 другие 5 байтов могут быть сброшены с помощью eval и нового модификатора подстановки / r regexp. Завершается 168 байтами:
Попробуйте онлайн!
источник
C 367 байт
Не так коротко, как казалось.
источник
Java 7,
585553 байта-32 байта благодаря @Zircon .
Можно определенно играть в гольф, используя что-то отличное от карты.
Объяснение:
Тестовый код:
Попробуй это здесь. (ideone.com в последнее время прослушивается, поэтому я использую TIO ..)
источник
put
вместоm.put
.C (GCC) , 311 байт
Четкие шаблоны, но так много исключений. Тем не менее, должен быть лучший способ, чем этот!
Попробуйте онлайн!
источник