你是一个盗取新技术初创公司Dejavu的秘密计划的罪犯。你偷偷溜过后墙,但找到一个门,需要一个别针才能打开它。您可以识别锁的构成,并知道它使用从0到4的所有数字,使用5位引脚。输入每个数字后,锁将检查输入的最后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位长,那么我的分数将是:
和往常一样,我们的目标是把这个分数降到最低。
以下是你应该如何发布你的答案:
语言\得分链接到工作环境中的代码(如果可能)
code snippet代码解释等。
这是我在这个网站上的第一个问题。所以,请告诉我,如果我错过了任何东西或部分我的挑战是不清楚的。谢谢,打高尔夫球玩得开心!
发布于 2019-02-07 08:41:54
žBœ∊{3ýžB push 1024
œ permutations: ["1024", "1042", …, "4201"]
∊ vertically mirror: ["1024", "1042", …, "4201", "4201", …, "1042", "1024"]
{ sort: ["0124", "0124", "0142", "0142", …, "4210", "4210"]
3 push 3
ý join: "01243012430142301423…3421034210"s+R+4d.p4 +R .p4 append to each permutation d of [0, 1, 2, 3]:
+4d [4] + d
s concatenate发布于 2019-02-07 08:44:09
4⟦pᶠP∧~l.g;Pz{sᵈ}ᵐ∧速度太慢,看不见任何东西,但如果您通过4更改2,您可以测试它:在网上试试!
这样就可以找到最短的超置换:
4⟦ The range [0,1,2,3,4]
pᶠP P is the list of all permutations of this range
∧
~l. Try increasing lengths for the output
g;Pz Zip the output with P
{sᵈ}ᵐ For each permutation, it must be a substring of the output
∧https://codegolf.stackexchange.com/questions/179607
复制相似问题