为了应对这一挑战,您必须Abbrev
以尽可能少的代码来实现Ruby的模块。
挑战
输入将是您的语言作为字符串数组(数组,列表,序列等)所具有的内容。您可以编写函数,也可以在STDIN上接受逗号分隔的单词。
然后,您必须为这些字符串计算一组明确的前缀。这意味着您必须将缩写的哈希值(或映射,对象等)返回到其原始字符串。
“前缀”是原始字符串的子字符串,从字符串的开头开始。例如,“ pref”是单词“ prefix”的前缀。
一个明确的前缀是一个只能意味着一个字。例如,如果您输入的是
car,cat
,则ca
前缀不是明确的,因为它可能表示“ car”或“ cat”。该规则的例外是单词始终是其自身的前缀。例如,如果输入中有诸如
car,carpet
,则car:car
必须在输出中。
然后,您可以返回哈希/地图/对象/等。从您的函数(或使用您的语言进行等效操作)中,或以
key:value
形式成对打印到STDOUT中f:foo,fo:foo,...
。(如果键/值对使您的代码更短,也可以将它们分隔开。)
测试用例
Input code,golf,going
Output c:code,co:code,cod:code,code:code,gol:golf,golf:golf,goi:going,goin:going,going:going
Input pie
Output p:pie,pi:pie,pie:pie
Input pie,pier,pierre
Output pie:pie,pier:pier,pierr:pierre,pierre:pierre
Input a,dog
Output a:a,d:dog,do:dog,dog:dog
规则
输入将不包含重复的元素。
您的输出可以是任何顺序;您不必对其进行排序。
您可能不使用内置
Abbrev
模块/函数/ Ruby之类的东西。这是代码高尔夫球,因此最短的代码(以字节为单位)将获胜!
key:value\nkey:value\nkey:value
...?