Кто-нибудь помнит Боти ?
Вы могли бы полностью произнести любое старое слово, верно?
- Напишите функцию, чтобы превратить строку в Somethingy McSomethingface.
- Он должен принять одну строку в качестве ввода. Игнорировать регистр ввода.
- Если слово оканчивается на «y», ваша функция не должна добавлять дополнительный «y» к первому экземпляру, но должна удалить его во втором.
- Если слово оканчивается на «эй», ему не следует добавлять дополнительный «у» в первом случае, но следует удалить оба во втором.
- Вывод должен состоять только из заглавных букв в первом символе, 'M' в 'Mc' и в первом символе после 'Mc'.
- он должен работать только со строками из 3 или более символов.
Примеры:
boat => Boaty McBoatface
Face => Facey McFaceface
DOG => Dogy McDogface
Family => Family McFamilface
Lady => Lady McLadface
Donkey => Donkey McDonkface
Player => Playery McPlayerface
yyy => Yyy McYyface
DJ Grand Master Flash => Dj grand master flashy McDj grand master flashface
' y'
и' '
Ответы:
Stax , 26 байт
Запустите и отладьте его
Запустите этот
источник
V , 27
2830байтПопробуйте онлайн!
<Esc>
представляет собой0x1b
Проиграл два байта после того, как узнал, что нам не нужно поддерживать вводы с менее чем 3 символами.
1 байт сохранен благодаря @DJMcMayhem, работая над второй строкой перед первой, тем самым удаляя
G
Вход находится в буфере. Программа начинается с преобразования всего в нижний регистр
V
выбирает строку и вu
нижнем регистре это~
переключает регистр первого символа (переводит его в верхний регистр)и
Ù
дублирует эту строку выше, оставляя курсор в нижней строкеó
и заменяетe¿y$
сжатую формуe\?y$
(необязательноe
и ay
в конце строки) ничем (происходит во второй строке)H
идет к первой линииó
заменяетy$
(y
в конце строки) ничего на первой строкеÁ
добавляетy
к концу первой строкиJ
и соединяет последнюю строку с первой с пробелом в середине, и курсор перемещается в это пространствоa
добавляетMc
(<Esc>
возвращается в нормальный режим)A
наконец, добавляетсяface
в конце строкиисточник
Python, 144 байта
Попробуйте онлайн здесь
источник
f("Face")
не соответствует текущим тестовым кейсам ( TIO ).Excel,
204144137165 байтовИзнутри наружу:
Старый ответ, создавая все биты отдельно, а затем конкатенируя (176 байт). Не правильно обрабатывает случаи, разделенные пробелом.
источник
PROPER(A1)
является недопустимым (см.DJ Grand Master Flash
Входной регистр), лучшая замена, которую я мог найти, работая над моим решением VBA, былаLEFT(UPPER(A1))&MID(LOWER(A1),2,LEN(A1))
- пожалуйста, дайте мне знать, если вы закончите игру в гольф.Perl 6 ,
423735 байтПопробуйте онлайн!
источник
C # (.NET Core) ,
122108139175180179154 байтаБольшое спасибо, Ли!
Попробуйте онлайн!
C # (.NET Core, с LINQ), 152 байта
Попробуйте онлайн!
источник
SOGL V0.12 , 38 байт
Попробуй здесь!
источник
Рубин ,
6149 байтПопробуйте онлайн!
Сохранено 12 сладких байтов благодаря @MartinEnder:
источник
=~
и собирать всю строку вместо использованияsub
. Строковая интерполяция может использоваться без скобок, если переменная является глобальной, переменной экземпляра или класса.-p
флаг и используяsub
: tio.run/…Python 3 , 80 байт
Долгое время заядлый читатель, моя первая подача наконец-то!
Попробуйте онлайн
источник
Сетчатка , 29 байт
Попробуйте онлайн!
источник
Python 2 ,
8892 байтаПопробуйте онлайн!
источник
Java 8,
121112107106 байт-1 байт благодаря @ OliverGrégoire .
Объяснение:
Попробуйте онлайн.
источник
~32
->95
на 1 байт сохраненоJavaScript,
1039694 байтаДовольно наивный первый проход в этом.
Попробуйте онлайн
источник
${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,``)}y Mc${s.replace(/e?y$/,``)}face
${s=s[0].toUpperCase()+s.slice(1).toLowerCase().replace(/y$/,'')}y Mc${s.replace(/e$/,``)}face
Donkey
а второе дляFace
.vim,
3534 байта<ESC>
является0x1b
Ungolfed
Попробуйте онлайн!
Сохранено 1 байт благодаря DJMcMayhem
источник
Y
вместоyy
Perl 5
-p
,4739 байтСохранено 6 байтов с предложениями @ OlegV.Volkov, 1 с @ mwellnhof и 1 самостоятельно
Попробуйте онлайн!
источник
ucfirst
:$_=lc^$";
$_=s/y$//r."y Mc".s/e?y$//r.face
на один байт короче./y$|$/
->/y?$/
C ++ 14 (g ++),
181171148147134 байтаОбратите внимание, что Clang не будет компилировать это.
За трюк следует отдать должное Кевину Круйссену и Оливье Грегуару
&95
.Спасибо Крису за игру в гольф 11 байтов.
Попробуйте это онлайн здесь .
Безголовая версия:
источник
s[0]=s[0]&~32;
кs[0]&=~32;
;s[i++]=s[i]|32;
кs[i++]|=32
; иint i=1,n=s.length()-1,b;
поэтому вам нужно только 1int
.#include<string>
n
и просто используя значениеi
после цикла while. Попробуйте онлайн!V ,
383632 байт-5 байт благодаря шарлатану @Cows
<esc>
является буквенным escape-символом и[^
кодируется как\x84
Попробуйте онлайн!
источник
gu$
может статьVu
[^
как это ярлык регулярного выражения (см. Здесь ), вы можете использовать 0x84 вместо того,[^
чтобы сохранить байт. Точно так же\?
может быть упрощено,<M-?>
чтобы сохранить другой байт. И$a
=>A
05AB1E , 30 байтов
Попробуйте онлайн! или как тестовый набор
источник
Python 3 ,
117114 байт-3 байта благодаря Мертвому Опоссуму
Попробуйте онлайн!
источник
[s,s[:-1],'',s[:-2]
может быть изменен,0
чтобы сохранить 1 байт.'y'*1
*1
это не нужно. Еще 2 байтаreturn
наprint
1 байт короче.JavaScript (Node.js) , 87 байт
Попробуйте онлайн!
источник
Buffer
, придется постараться запомнить его для будущих задач. Получил для вас до 87 байт .К4 ,
746968 байтРешение:
Примеры:
Объяснение:
Выясните, равны ли последние символы
"ey"
, преобразуйте результат в base-2, чтобы мы могли игнорировать слова, которые заканчиваются"e?"
. Индекс в список номеров символов для обрезки.Мне удалось сбрить 5 байтов из моего кода, чтобы определить, есть ли у последних два символа,
"ey"
но изо всех сил пытается его улучшить ...Бонус:
67-байтовый порт в К (оК) :
Попробуйте онлайн!
источник
Рубин , 69 байт
Объяснение:
Попробуйте онлайн!
источник
s.capitalize
заменяет ли предыдущийs
? Если нет, не/e?y$/
справиться с экзаменом заканчивается вY
,EY
илиEy
правильно?s.capitalize
vss.capitalize!
(разные функции).s.capitalize!
забивает старую версию.s.capitalize!
. Никогда не программируется на Ruby, но добавление метки объяснения для замены предыдущего значения довольно круто. +1 от меня.Jstx , 27 байт
объяснение
Попробуйте онлайн!
источник
Красный ,
143142 байтаПопробуйте онлайн!
Ungolfed:
источник
PHP: 132
Объяснение:
источник
Желе ,
77757473 байтаПопробуйте онлайн!
Любые предложения по гольфу приветствуются (и хотели)!
источник
Pyth,
3634 байтаПопробуйте онлайн!
Объяснение:
источник
rz3
чтобыrz4
заставить это работать должным образом для последнего контрольного примера.Elixir ,
112110107106 байттеперь такой же короткий, как Java
Попробуйте онлайн!
Объяснение:
Получает
x
первый символ в верхнем регистре и все остальные строчные.Оцените код и вставьте его в строку.
Объединяет x с,
y
если оно не заканчиваетсяy
(то есть не соответствует регулярному выражениюy$
).Удаляет трейлинг
ey
и трейлингy
.источник
PHP , 45
46байтПопробуйте онлайн!
источник
boAty
. (Неправильные заглавные буквы, «у» не удалены).Pyth,
6059 байтов SBCSТестирование
Они не показывают здесь, но три байта,
Перевод Python 3:\x9c
,\x82
и\x8c
в упакованной строке междуs
и÷
. Будьте уверены, ссылка включает их.источник