Отец-основатель рок-н-ролла Чак Берри с грустью скончался сегодня.
Рассмотрим припев его знаменитой песни « Джонни Б. Гуд »:
Go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Johnny B. Goode
(Существуют и другие способы, которыми оно было акцентировано, но вышеизложенное послужит целям испытания.)
Вызов
Если задана непустая строчная строка букв az, выведите припев «Johnny B. Goode» со всеми экземплярами Go
или go
замените входную строку, написанную с заглавной буквы таким же образом.
Трейлинг новой строки может следовать. Больше ничего в хоре не должно измениться.
Например , если на входе
code
вывод, должен быть точноCode, code Code Johnny code, code Code Johnny code, code Code Johnny code, code Code Johnny code, code Johnny B. Codeode
необязательно, с последующим переводом строки.
Обратите внимание, что заглавные буквы всех слов соответствуют исходному хорусу, и (несмотря на отсутствие ритма) заменяется Go
in, Goode
а также отдельные слова Go
и go
.
Самый короткий код в байтах побеждает.
Тестовые случаи
"input"
output
"go"
Go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Johnny B. Goode
"code"
Code, code
Code Johnny code, code
Code Johnny code, code
Code Johnny code, code
Code Johnny code, code
Johnny B. Codeode
"a"
A, a
A Johnny a, a
A Johnny a, a
A Johnny a, a
A Johnny a, a
Johnny B. Aode
"johnny"
Johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny B. Johnnyode
"fantastic"
Fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Johnny B. Fantasticode
an
,c
,cath
Ответы:
Go, 123 байта
Иди Джонни, иди !
Попробуйте онлайн!
источник
90
байтов.VIM,
5449 нажатий клавиш (спас 1 нажатие клавиши от Kritixi Lithos )Начните со слова в строке в файле с курсором на первом символе, затем это заменит все это текстом Объяснение
Попробуйте онлайн! (Спасибо DJMcMayhem !)
источник
Y
вместоyy
и, может быть, дажеG
вместо2j
<CR>
вместо<esc>o
hD
работает вместоdiw
Чистый Баш,
6976 байтПопробуйте онлайн!
источник
code
все строчные буквы, вы не получите нужную капитализацию.05AB1E , 37 байт
Попробуйте онлайн!
объяснение
источник
Пакетный, 207 байтов
источник
JavaScript, 98
Злоупотребляет сериализацией массива в строку для создания запятых. Строит массив вида:
И объединяет его в строку вида
", go\nJohnny B. Goode"
:источник
JavaScript (ES6),
10410199 байтПредыдущая версия:
Как это устроено:
Это анонимная функция, которая принимает входные данные в качестве параметра
i
Определяет переменную
u
как вводi
с заглавной первой буквой (обратите внимание, что это предполагает, что ввод не пуст, что нормально)Просто создайте строку, которая будет возвращена из этих двух переменных.
Повторение строки
"go, \nGo Johnny go"
четыре раза вместо повторения"Go Johnny go, go"
сохраняет один байт.Редактировать 1: Забыл сыграть в точку с запятой, ха-ха! Также неправильно подсчитал байты, это было изначально 102, а не 104. Спасибо апсиллерам .
Редактировать 2: вместо того
.repeat(4)
, чтобы поместить эту строку в переменнуюx
и делатьx+x+x+x
позволяет сохранить два байта.Тестовый фрагмент
Показать фрагмент кода
источник
V ,
41, 38 байтовПопробуйте онлайн!
Идеальный вызов для V!
Объяснение:
источник
Pyth - 52 байта
Тестовый пакет .
источник
C
156151 байтисточник
main()
которая фактически вызывает функцию, она работает ...Python 3, 88 байт
Строка простого формата с позиционными аргументами.
источник
len("\n".__repr__()[1:-2])
равно 2. Я забыл__repr__()
при измерении длины программы."""
метками вместо"
меток.Сетчатка , 65 байт
Число байтов предполагает кодировку ISO 8859-1.
Попробуйте онлайн!
источник
Желе , 41 байт
Попробуйте онлайн!
источник
Python, 94 байта
источник
C #,
219211212146122 байтаРеализовано несколько предложений из комментариев с дополнительной оптимизацией. Это конечный результат:
Попробуйте онлайн!
Эксплантация:
Выход для тестовых случаев:
Редактировать: Спасибо Уэстон за предложение использовать функцию
источник
^32
. Это короче, чем&~32
я использовал. Кроме того, порт моего ответа на Java 7 кажется короче:string x(string a){string x=(char)(a[0]^32)+a.Remove(0,1),n=a+"\n",c=", ",r=n+x+" Johnny "+a+c;return x+c+r+r+r+r+n+"Johnny B. "+x+"ode";}}
( 139 байт ). Попробуйте здесь.string x(string a)
->(a)=>
, -13 байт), только на 1 байт позади меня;)Func<string, string>
вы можете простоa=>
не нуждаться в()
.MATLAB / Octave ,
133111 байтЭто начало. Можно надеяться, будет уменьшена в дальнейшем.
По сути, это анонимная функция, которая принимает строковый ввод, а затем использует регулярное выражение для создания требуемого вывода.
Пример:
Вы можете сортировать по Попробовать онлайн! , Код не совсем работает с Octave, поскольку все заглавные буквы становятся${upper($0)}
, тогда как в MATLAB это преобразуется в фактическую заглавную букву.Поскольку входные данные гарантированно будут только
a-z
(строчные буквы), я могу сохранить 22 байта, используя простое вычитание из 32 для преобразования первой буквы в строке в заглавную, вместо использования регулярного выражения сupper()
функцией.В результате код теперь работает и с Octave, так что теперь вы можете попробовать его онлайн!
источник
Рубин,
89888679 байтовМоя первая подача в гольф:
Большое спасибо @manatwork за его замечательный комментарий: на 7 байт меньше!
источник
?
нотации; скобки вокруг последних.gsub
параметров не нужны. pastebin.com/6C6np5DfНова , 105 байт
Поскольку Nova ( http://nova-lang.org ) является чрезвычайно ранней бета-версией (и глючной), существуют некоторые очевидные недостатки, которые не позволяют ей использовать еще меньше байтов.
Например, мог бы сохранить вызов заглавной функции (который вызывается 3 раза) в локальной переменной, например:
что бы уменьшить количество байтов до 89 байт . Причину, по которой это не работает сейчас, можно обвинить в порядке оценки аргументов в языке C, поскольку Nova компилируется в C. (порядок оценки аргументов будет исправлен в будущем обновлении)
Более того, я мог бы ввести свойство "title" в классе String (и я сделаю это после выполнения этого lol), чтобы уменьшить количество вызовов функции капитализации:
и это освободило бы 7 байтов до нового общего количества 82 байта .
Кроме того (и далее), после добавления вывода типа лямбда-переменной, это будет допустимо:
Количество может быть уменьшено до 72 байтов .
Кстати, это мой первый гольф-код, поэтому я, вероятно, пропустил еще больше оптимизаций, которые можно было бы сделать. И это язык, не ориентированный на гольф , язык общего назначения , я думаю, он довольно впечатляющий.
Первый 105-байтовый код работает в текущей сборке Nova Beta v0.3.8, доступной на http://nova-lang.org
выходы:
Спасибо за то, что выслушали мою бесстыдную рекламу языка общего назначения Nova (найдена на http://nova-lang.org ... получите ее сейчас !!)
источник
Brainfuck, 352 байта
Попробуйте онлайн!
Мне всегда нравятся испытания в Brainfuck, так что это было весело. Вероятно, можно больше играть в гольф, но игра Brainfuck довольно длинная.
источник
PHP, 86 байт
источник
Ява 8,
151147146130 байтОбъяснение:
Попробуй это здесь.
источник
С накоплением , 64 байта
Попробуйте онлайн!
источник
C # ,
159130128 байтовGolfed
Ungolfed
Ungolfed читаемый
Полный код
релизы
- 2 bytes
- обмениваемых(i)=>
дляi=>
, благодаря TheLetalCoder комментарий.-29 bytes
- Благодаря последнему обновлению сэра Bitesalot , который запомнил меня, я мог редактировать строку перед форматированием.159 bytes
- Исходное решение.Примечания
В заголовке есть ссылка на страницу с кодом и контрольными примерами. Просто нажмите Go, и результат будет напечатан под кодом.
источник
()
во всем спорить,Func
просто делайi=>
. Вы, вероятно, также можете использовать интерполированные строки из C # 6 и потерять их,string.Format
хотя я не слишком много смотрел на код, чтобы понять как (должно быть тривиально).()
, но сомневаюсь, что смогу использовать интерполированные строки без увеличения размера кода из-за замены, которая случается, чтобы свернуть повторение.Javascript -
72106 байтРедактировать: Ой! Я не обращал внимания на правила капитализации! Это будет дольше через некоторое времяРедактировать 2: должны следовать правилам сейчас!
Может быть, больше в гольфе
Используется как:
источник
Excel VBA,
137121112898784 байтаФункция анонимного непосредственного окна VBE, которая получает ввод типа
Variant/String
из ячейки[A1]
и выводит, печатая непосредственное окно VBE-16 байт для преобразования в функцию непосредственного окна
-9 байт для использования
[PROPER(A1)]
-23 байта для удаления
For ...
цикла и злоупотребления?
оператором-2 байта для замены
" Johnny "&[A1]&", "&[A1]
на[" Johnny "&A1&", "&A1]
-3 байта для использования
+
over&
для конкатенации строк и оставления строки терминала незакрытойПример дела
источник
Debug.?s
эффективноDebug.Print
? Как это работает??
,i=1To
и&c
перевариваются в более подробные, но удобочитаемые термины, такие какPrint
,i = 1 To
и& c
. Сообщество решило, что сжатая версия кода на языках приемлема для ответов (см. Codegolf.meta.stackexchange.com/questions/10258/… )?
, я полагаю, что это остаток от старой версии Excel (4.0 и ниже), где листы макросов использовались вместо VBA через VBE, где он использовался в качестве ключевого слова для печати строки, предоставленной после указанный текстовый файл. Само?
ключевое слово все еще очень полезно для игры в гольф, посколькуPrint
ключевое слово используется для записи строк в текстовый файл в текущих версиях VBA. Заметьте, я ухожу из памяти с одним, так что возьмите это с зерном соли.CJam , 50 байтов
Попробуйте онлайн!
Объяснение:
источник
Пайк , 43 байта
Попробуйте онлайн!
Создает и печатает первую строку, затем вставляет
Johnny go
перед запятой и дублирует ее 4 раза. Наконец конструирует последнюю часть.источник
johnny
. tio.run/nexus/…Python, 258 байт
источник
t
потому что она вызывается только один раз.Java 6,
258242 байтаСамая длинная часть - это формат для printf. Есть проблемы с вводом, отличным от string от
a
toz
(да, я знаю, что мне больше ничего не нужно поддерживать).Разоблаченный с комментариями:
РЕДАКТИРОВАТЬ: Гольф 16 байтов благодаря Уэстон
источник
"Johnny"
всегда сопровождается пробеломb[0]^=32;
будет также в верхнем регистре без необходимости(char)
броска.Mathematica, 83 байта
Анонимная функция. Принимает строку в качестве ввода и возвращает строку в качестве вывода. Возможно, будет в гольф дальше.
источник