一个全字母短句是一个包含每个字母串a
- z
英文字母,不区分大小写的。(如果pangram包含一个字母的多个副本,或者除字母之外还包含非字母字符,则可以。)
编写一个程序或函数,其输入为字符串列表,并输出一个或多个具有以下属性的字符串:
- 每个输出字符串必须是一个字符集。
- 每个输出字符串必须通过串联输入列表中的一个或多个字符串来形成,并用空格分隔。
- 在具有这些属性的所有字符串中,每个输出字符串必须最短,或者最短。
许多程序将选择仅输出一个字符串;您只需要输出多个字符串,否则就不得不编写额外的代码来限制输出。
您可以假定输入中没有不可打印的字符或空格,并且输入的单词长度不超过(列表长度的自然对数的26倍)个字符。(但是,您可能不会假设输入内容只包含字母,或者仅包含小写字母;标点符号和大写字母完全可能。)
输入和输出可以任何合理的格式给出。为了测试您的程序,我建议使用两个测试用例:英语单词词典(大多数计算机都有一个),以及以下情况(不可能有完美的字母(26个字母)),因此您必须找到一个包含重复的字母):
abcdefghi
defghijkl
ijklmnop
lmnopqrs
opqrstuvw
rstuvwxyz
您应随程序一起提供程序输出的样本。(由于使用了不同的单词列表,这对于不同的人可能会有所不同。)
胜利条件
这是一个限制复杂度的 代码高尔夫挑战。优胜者是在多项式时间内运行的最短程序(以字节为单位)。(针对不知道这意味着什么的人的摘要:如果将单词列表的大小加倍,则程序的速度应不超过一个恒定因子。但是,有问题的恒定因子可能与您一样大例如,将它变慢4倍或8倍是有效的,但是变小它不是单词列表长度的一个因素;它变慢的因素必须加以限制。)