麦克基先生是南方公园的一个人物,以他所说的一切都加上“ m'kay”而闻名。
编写一个程序或函数,将一串文本转换成Mackey先生会说的话。
麦凯安置
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
如果由于随机性而从未添加any ,则不能总是在字符串末尾添加m'kay
。如果只有一个m'kay
,即使强制存在,它也必须具有相同的出现在每个有效位置的概率。如果
m'kay
是后?
,.
或者!
,在m
必须大写。m
in 的数目m'kay
必须在1到3之间统一选择。也就是说m'kay
,mm'kay
和mmm'kay
都是所有可能的选择,每个选择的概率为0.33 ...如果必须将其大写(请参见上述规则),则m
必须将其全部大写。
输入,输出
输入是ASCII字符串,其中包含从ASCII Dec 32(空格)到ASCII Dec 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!
计分
这是code-golf,所以以字节为单位的最短代码胜出,是吗?
M'kay
、、、?和!后面有50%的随机添加概率, ”似乎与“ 必须始终至少m'kay
添加一个 ” 不兼容。请澄清一下