更新:取消了时间限制。您必须能够描述输出-请参阅新规则。
一个全字母短句是使用字母表中的每个字母至少一次,如句子:
一个完美的全字母短句使用每个字母一次。
考虑使用95个可打印的ASCII字符(十六进制代码20至7E)作为字母编写完美的pangram程序:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
这样的程序必须完全包含95个字符,每个可打印的ASCII字符仅出现一次,但顺序不限。(因此有95!= 1.03×10 148个可能性。)
您的任务是编写此程序,以使打印到stdout的可打印ASCII字符数尽可能多(即,多产)。
您的分数是程序输出的可打印ASCII字符数(总数,而不是不同的数字:AABC
分数4,而ABC
分数3)。最高分获胜。
细节
- 输出可能包含任何字符(包括重复字符),但只有95个可打印ASCII字符的实例才计入您的分数。
- 您可以使用此JSFiddle来计算任何字符串中可打印ASCII字符的数量。
- 如果您的语言没有标准输出,请使用最合适的替代方法。
- 您的程序...
- 必须具有有限的运行时(时间限制已删除)
- 必须具有有限的输出
- 可能包含评论
- 必须编译并运行时没有(未捕获)错误
- 不得提示或要求输入
- 必须是时间不变的和确定性的
- 不得使用外部库
- 一定不需要网络连接
- 不得使用外部文件
- (您可以使用程序文件本身,只要更改文件名不会改变程序的行为)
- 如果这项任务不可能完成,那是某种糟糕的语言。
- 如果输出太大而不能容纳在帖子中,则必须给出准确的输出或准确地描述它。您实际上不必运行程序。只要将在有限的时间量在计算机上运行的内存无界量它是有效的。
例
这个简单的Python 2程序是可能的解决方案:
print 9876543210#!"$%&'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjklmoqsuvwxyz{|}~
它输出9876543210
包含10个可打印ASCII字符,因此得分为10。
a
六次,达到六千万次,甚至无法获得精确的上限。字符数。无论如何,我仍然为自己的95感到骄傲,即使它很小。你知道大小不是一切。