Мистер Макки - персонаж из Южного парка, хорошо известный тем, что он добавляет «m'kay» во все, что он говорит.
Напишите программу или функцию, которая преобразует строку текста в то, что сказал бы мистер Макки.
M'kay размещение
m'kay
имеет случайный 50% шанс того , чтобы быть добавлен после пунктуации,
,.
,?
и!
. Если это так, за ним будет следовать точно такой же знак пунктуации, который стоит перед ним и перед ним стоит пробел.Например, в предложении можно добавить
Test, test.
два местаm'kay
: после запятой и после точки с вероятностью 50% в каждом месте. Возможные результаты будутTest, m'kay, test
. илиTest, test. M'kay.
илиTest, m'kay, test. M'kay.
.Всегда должен быть хотя бы один
m'kay
добавленный . Более того, оно не всегда может быть в одном и том же месте, и каждое действительное место, гдеm'kay
его можно добавить, должно происходить с равной вероятностью. То есть вы не можетеm'kay
всегда добавлять в конце строки, если из-за случайности вы никогда не добавляли ни одногоm'kay
. Если есть только одинm'kay
, он должен иметь одинаковую вероятность появления в каждой действительной позиции, даже если его присутствие является обязательным.Если
m'kay
после?
,.
или!
,m
должен быть в верхнем регистре.Количество
m
вm'kay
должно быть uniformely выбрал между 1 и 3. То естьm'kay
,mm'kay
иmmm'kay
есть все возможные варианты, каждый из которых с вероятностью 0,33 ... Если он должен быть в верхнем регистре (см выше правила), всеm
должно быть в верхнем регистре.
Входы, выходы
Входными данными являются строки ASCII, содержащие символы от ASCII дек 32 (пробел) до ASCII дек 126 (тильда
~
). На входе нет разрывов строк. Вы можете предположить, что любой вход будет содержать хотя бы один из, . ? !
.Вы можете предположить, что
m'kay
на входе нет ни одного из вариантов.Входные данные могут быть взяты из STDIN, аргументов функции, командной строки или чего-либо подобного.
Вывод может быть через STDOUT, возврат функции или что-то подобное.
Контрольные примеры
- Входные данные:
Test.
Возможный вывод: Test. M'kay.
- Входные данные:
Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. It's 100% free, no registration required.
Возможный вывод: Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. MMM'kay. It's 100% free, mm'kay, no registration required.
- Входные данные:
Drugs are bad, so, if you do drugs, you're bad, because drugs are bad. They can hurt your body, cause drugs are bad.
Возможный вывод: Drugs are bad, m'kay, so, if you do drugs, you're bad, m'kay, because drugs are bad. They can hurt your body, m'kay, cause drugs are bad. M'kay.
- Входные данные:
Do you understand? Really? Good!
Возможный вывод: Do you understand? MM'kay? Really? Good! MMM'kay!
счет
Это код-гольф , поэтому выигрывает самый короткий код в байтах, ладно?
M'kay
вероятность случайного добавления 50% после знаков препинания,.,? и! » кажется несовместимой с « всегда должен быть хотя бы один m'kay
добавленный ». Пожалуйста, уточните, что