首页
学习
活动
专区
圈层
工具
发布

超置换
EN

Code Golf用户
提问于 2019-02-07 08:00:44
回答 10查看 2.7K关注 0票数 28

Introduction

你是一个盗取新技术初创公司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位长,那么我的分数将是:

40 * 153 = 6120

和往常一样,我们的目标是把这个分数降到最低。

模板

以下是你应该如何发布你的答案:

语言\得分链接到工作环境中的代码(如果可能) code snippet代码解释等。

结局

这是我在这个网站上的第一个问题。所以,请告诉我,如果我错过了任何东西或部分我的挑战是不清楚的。谢谢,打高尔夫球玩得开心!

EN

回答 10

Code Golf用户

发布于 2019-02-07 08:41:54

05AB1E,score = 1673 (7字节·239)

代码语言:javascript
复制
žBœ∊{3ý

在网上试试!

是如何工作的

代码语言:javascript
复制
ž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"

皮斯,score =1944年(9字节·216)

代码语言:javascript
复制
s+R+4d.p4

在网上试试!

是如何工作的

代码语言:javascript
复制
 +R   .p4   append to each permutation d of [0, 1, 2, 3]:
   +4d        [4] + d
s           concatenate
票数 6
EN

Code Golf用户

发布于 2019-02-07 08:44:09

布氏对数,score = 2907 (19个字节×153)

代码语言:javascript
复制
4⟦pᶠP∧~l.g;Pz{sᵈ}ᵐ∧

速度太慢,看不见任何东西,但如果您通过4更改2,您可以测试它:在网上试试!

这样就可以找到最短的超置换:

代码语言:javascript
复制
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
                  ∧
票数 3
EN

Code Golf用户

发布于 2019-02-07 08:40:53

果冻,3000 (600*5字节)

代码语言:javascript
复制
5ḶŒ!F

在网上试试!

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/179607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档