背景
这是有关文本处理的3洞高尔夫球场的第一部分。最重要的想法是,如果您输入一个输入文本并通过解决所有这三个挑战的解决方案(使用少量的粘合代码)来传递它,则它会吐出一段格式精美的段落。在第一个挑战中,您的任务是使用给定的连字模式对文本片段进行连字。
输入值
您的程序应采用两个字符串输入:一段文本和一个连字符模式列表。第一个输入只是一个可打印的ASCII字符和空格的非空字符串;它不会包含换行符或波浪号~
。第二个输入是一个以逗号分隔的单词列表,由小写ASCII字符的代字号分隔的音节组成。一个例子是ex~cel~lent,pro~gram~ming,abil~i~ties
。
输出量
您的程序应按以下方式修改第一个输入。在第二个输入中找到带连字符的小写字母的任何单词(字母ASCII字符的最大子串)都应由该带连字符的字母替换,但应保留其大小写。在上面的示例列表中,如果文本包含单词Excellent
,则应将其替换为Ex~cel~lent
;然而,Excellently
应不会被修改。您的输出应为此修改后的字符串。
详细规则和计分
您可以假设以下有关输入的信息:
- 第一个输入不包含波浪号,也没有前导,尾随或重复的空格。它不是空的。
- 第二个输入至少包含一个单词,并且每个单词中至少包含两个音节。每个音节都是非空的。
- 第二个输入不包含在另一个单词中作为音节出现的单词。
如果需要,可以更改两个输入的顺序,还可以选择在输出中添加一个尾随换行符。
您可以编写函数或完整程序。最低字节数获胜,并且不允许出现标准漏洞。
测试用例
这些以格式列出1st input [newline] 2nd input [newline] output
。
Excellent programming abilities, you work excellently!
ex~cel~lent,pro~gram~ming,abil~i~ties
Ex~cel~lent pro~gram~ming abil~i~ties, you work excellently!
Superman (sometimes incorrectly spelled "Super-man") is super #&%@ing strong.
su~per,some~times,in~cor~rectly,spell~ing
Superman (some~times in~cor~rectly spelled "Su~per-man") is su~per #&%@ing strong.
IncONsISTent caPItalizATIon!
in~con~sis~tent,cap~i~tal~iza~tion
In~cON~sIS~Tent caP~I~tal~izA~TIon!
Such short words.
awk~ward
Such short words.
Digits123 are456cool789.
dig~its,dig~i~tal,are~cool
Dig~its123 are456cool789.
magic magic
ma~gic
ma~gic ma~gic
此挑战中的任何可能的断字错误均归因于此断字工具。
#programming!
仍会受到的第二个输入的影响pro~gram~ming
)?数字也不计数吗(即仅允许使用字母字符)?