Вот (довольно страшная) песня Five little ducks (она не длинная):
Five little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only four little ducks came back.
Four little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only three little ducks came back.
Three little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only two little ducks came back.
Two little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only one little duck came back.
One little duck went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but none of the little ducks came back.
Mother duck herself went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
and all of the little ducks came back.
Ваша задача не выводить эту песню. Вы должны взять стих и вывести следующий стих (следующий стих последнего стиха - первый стих).
правила
- Никаких стандартных лазеек, пожалуйста.
- Ввод / вывод будет осуществляться через наши стандартные методы ввода / вывода.
- Точный стих должен быть выведен, и не должно быть никаких различий по сравнению с текстами песен. Входные данные не будут отличаться, если сравнивать их с текстами песен.
Примеры
Mother duck herself went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
and all of the little ducks came back.
Ожидаемое:
Five little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only four little ducks came back.
Three little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only two little ducks came back.
Ожидаемое:
Two little ducks went out one day,
over the hills and up away.
Mother Duck said, "Quack Quack Quack Quack",
but only one little duck came back.
Ответы:
Stax ,
115111 байтЗапустите и отладьте его
Все стихи как контрольные примеры
источник
JavaScript (ES9), 227 байт
Это похоже на версию узла ниже , но использует формулу на основе
parseInt()
вместоBuffer()
идентификации входного стиха.Это ES2018 (он же ES9), потому что мы используем регулярное выражение с
/s
флагом ( dotAll ).Попробуйте онлайн!
Как?
В этой версии мы анализируем весь входной стих как основу 30 (
0
доt
) и выполняем побитовое И с 7. Разбор останавливается на первом недопустимом символе, что приводит к:JavaScript (Node.js) ,
233 231227 байтСохранено 2 байта благодаря @Shaggy
Попробуйте онлайн!
Как?
Третий символ каждого входного стиха может использоваться как уникальный идентификатор. Взяв код ASCII по модулю 9, мы получим:
Выходные стихи кодируются с помощью следующих шаблонов:
Где каждая цифра заменяется строкой в соответствии со следующей таблицей:
Где регулярное выражение
/ w.*\n/s
извлекает эту общую часть из ввода:Мы наконец добавляем последние 11 символов ввода, который есть
" came back."
.источник
exec
когда страница перезагрузилась. Великие умы ... !Python 3 ,
267 263254 байта4 байта сохранены благодаря @ovs
Попробуйте онлайн!
Работает, заменяя соответствующие части соответствующими частями следующего стиха.
После преинициализации
T
есть['8', '9', 'and all of the little ducks', 'One little duck', 'but none of the little ducks', 'Two little ducks', 'but only one little duck', 'Three little ducks', 'but only two little ducks', 'Four little ducks', 'but only three little ducks', 'Five little ducks', 'but only four little ducks', 'Mother duck herself']
.альтернатива Python 2 , 252 байта
@ovs
Попробуйте онлайн!
источник
for a in zip(T,T[-2:]+T):s=s.replace(*a)
для 264 байтов.lambda s:reduce(lambda s,a:s.replace(*a),zip(T,T[-2:]+T),s)
на 262 байт в Python 2.T[2:]
вместо нихT[-2:]
QuadR ,
257242 байта-14 благодаря Черной Сове Кай, -1 благодаря Кевину Круйссену
Попробуйте онлайн!
источник
Java 10, 347 байт
Попробуйте онлайн.
Объяснение:
Сначала мы заменяем все части одну на другую целыми числами в диапазоне[ 10 , 21 ] и затем эти целые числа возвращаются к своим заменам. Причина, по которой это делается в два этапа, заключается в том, что в противном случае мы заменили бы замены.
источник
T-SQL,
407 390 388382 байтаВвод осуществляется через уже существующую таблицуя с v , соответствии с нашими правилами IO .
VARCHAR(MAX)
полемПосле пары сохраняющих байты
REPLACE
s выполняет в качестве динамического SQL следующее:Использует
CASE
утверждение иSTUFF
команды для вставки / перезаписи символов в указанных позициях.РЕДАКТИРОВАТЬ :
LEFT
вместоSUBSTRING
пробела и исключения пробелаCHAR
и перенеся дополнительную букву во вторуюREPLACE
(спасибо, @CDC!)Вот моя первая версия, использующая другой метод (после замены, отформатированный):
STRING_SPLIT
иPARSENAME
используются для разбиения строки на строки и столбцы с помощью-
и.
разделители.Первый столбец - это ключевой символ, который сопоставляется с третьей буквой входного стиха (спасибо за идею, @ Night2). Второе и третье - замены, выполняемые для этого стиха.
источник
Python 2 , 1034 байта
Это мой код! Он использует простой словарь. После запуска этого кода вы можете ввести любой стих, и он выведет следующий стих.
PS: я новичок в этом канале, и это мой первый пост. Мне очень понравился этот вызов, поэтому решил попробовать. Пожалуйста, не стесняйтесь поправлять меня.
источник
x
илиa
). 2) Python довольно разрешительный с пробелами, поэтому я бы попытался удалить некоторые из ваших пробелов. Например, вам не нужны места вокруг=
. Наконец, у нас есть страница для игры в гольф на питоне, которую вы можете посетить, чтобы улучшить свою игру.sys
, используя, напримерraw_input()
, укорочение ключа словаря и т. Д. Вы должны определенно вынуть повторяющиеся фрагменты песни и добавить их отдельноPHP (7.4),
253247 байт-6 байт за счет улучшения построения массива замен с помощью «Распаковки внутри массивов».
Попробуйте онлайн!
Это создает массив каждой возможной замены (12 использованных + 2 неиспользованных) в
key=>value
формате. Пример:['Mother duck herself' => 'Five little ducks', etc...]
а затем просто заменяет тех, кто использует strtr .Единственная интересная вещь - это мое первое использование «Распаковки внутри массивов», которое является новой функцией в PHP 7.4.
PHP , 264 байта
Попробуйте онлайн!
Я сохранил разные слова каждого стиха в массиве. Я нахожу, в каком стихе ввод использует третий символ ввода, поскольку он уникален (
vuroet
). Затем я просто заменяю разные слова этого стиха другими словами следующего стиха.источник
Чистый , 352 байта
Попробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) , 262 байта
Попробуйте онлайн!
источник
PowerShell ,
356343340336 байтовПопробуйте онлайн .
Более читаемая версия:
источник
PowerShell ,
265263255251246 байтПопробуйте онлайн!
Я использовал грубую силу, чтобы найти выражение
+"$args"[2]*37%724%7
.Спасибо @Arnauld за
3rd char
.источник
Japt v2.0a0, 143 байта
Попытка кодирования одного стиха с заменами, но, в конце концов, адаптация решения Арно в итоге оказалась короче. Есть еще одна идея, которая, надеюсь, сработает снова, но не знаю, когда я ее попробую.
Попробуйте - включает в себя все стихи
источник
Баш ,
373355 байтЗдесь нет ничего сумасшедшего. Легким сокращением в несколько байтов было бы заменить двухсимвольные переменные (a1, a2, a3, e1..e6) односимвольными.
Попробуйте онлайн!
Попробуйте онлайн!источник
05AB1E , 134 байта
Попробуйте онлайн!
Так как я относительно новичок в 05AB1E, это может быть много в гольфе
источник
Perl 6 , 247 байт
Попробуйте онлайн!
Определенно пригодный для игры в гольф, особенно последние 5 элементов в списке в форме
"num $l num-1"
, или начальное регулярное выражение, которое соответствует правым частям старого ввода.источник
Древесный уголь , 156 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Посмотрите на третий символ первой строки, чтобы понять, какой стих мы хотим.
Выход первой части первой линии индексации в список строк
Five
,Four
,Three
,Two
,One
,Mother duck herself
. Затем распечататьlittle duck
и,s
в случае необходимости, последующие 18 символов строки ввода (которые всегда одинаковы в каждом стихе).Две средние строки всегда одинаковы в каждом стихе.
Для последней строки оказалось, что
little ducks
по какой-то причине было бы лучше включить ее в список альтернатив, но последние 11 символов все еще копируются из ввода.источник
чернила , 353 байта
Попробуйте онлайн!
Во- первых, использование подстрок проверки , чтобы выяснить , что стих мы в - это достаточно легко благодаря капитализации чисел в начале -
F
,T
иO
не встречаются в других местах, и вы можете выделить второй и четвертый стих из первое и третье, также проверяяFi
иTh
соответственно.Тогда мы просто делаем то, что чернила делают лучше всего, и печатаем простой текст, заправленный условными обозначениями. Сначала я попытался использовать операторы switch, но, хотя это выглядело лучше, на самом деле это длилось дольше.
Вы могли бы подумать, что
Quack
s будет хорошим местом для использования переменных, например, когда строка повторяется несколько раз, но переменные идут с достаточными накладными расходами, что каждый способ, который я пытался сделать, делал код длиннее. Может быть, это признак того, что я не должен играть в гольф чернилами.источник