介绍
您是窃取新技术创业公司Dejavu的一些秘密计划的罪犯。您潜入后墙,但发现一扇需要用别针打开的门。您可以识别出锁的型号,并且知道它需要使用5位数的密码,并且使用从0到4的所有数字。在输入每个数字之后,锁会检查输入的最后5位数,并在密码正确的情况下打开。您必须快速通过此锁定。
简而言之,超置换
排列是一组特定数字的所有可能组合。例如,数字0、1、2的所有排列为:
012、021、102、120、201和210。
如果将所有这些置换连接在一起,则会得到一个超置换:
012021102120201210
此超置换包含0、1、2的所有置换,但可以使该置换短一些。我将在这里略过一些,但是这些数字的最短置换是:
012010210
就我们的意图和目的而言,这实际上是最短的数字字符串,其中包含这些数字的所有可能排列,即超排列。
任务
您的任务比上面的超级置换示例要难一些,因为您还有两个数字需要担心。-如果您还没有阅读有关超置换的文章,或者我上面的例子不清楚,我强烈建议您阅读Patrick Honner撰写的有关该主题的出色文章(这一挑战受到他的文章的启发很大,因此对他表示敬意):https://www.quantamagazine.org/unscrambling-the-hidden-secrets-of-superpermutations-20190116/。您的目标是编写尽可能最短的程序,以产生数字0到4的超排列。
计分
您的程序不接受任何形式的任何输入,并且产生从0到4的数字的超置换。此超置换必须打印到控制台或以您选择的语言提供的可视化方式显示给用户。这不必是最短的排列,而必须是有效的超排列。因此,目标是编写具有最短超置换的最短程序,因此您应该像这样计算分数:
文件大小(字节)*生成的超置换长度(数字)
例如,如果我有一个40字节的程序,并且我的超置换长度为153位数字,那么我的分数将是:
40 * 153 = 6120
与往常一样,目标是使该分数尽可能低。
模板
这是发布答案的方法:
语言| 得分
链接到工作环境中的代码(如果可能)
code snippet
代码说明等
结局
这是我对此网站的第一个问题。因此,请告诉我是否遗漏了任何东西,或者尚不清楚我的挑战的一部分。谢谢,打高尔夫愉快!