更改代码,更改顺序:警察


27

这是挑战。有关强盗线索,请转到此处

这项挑战涉及警察选择的两个OEIS序列-S 1S 2-以及对这些序列进行打高尔夫球和模糊处理的程度。

警察的挑战

作为警察,您面临的挑战是选择一种免费的语言和两个OEIS序列。然后,用输入n并产生S 1(n)的语言编写代码A。当该码是由经修饰的Levenshtein距离X字符(其中X不超过),并变成代码以相同的语言,它必须继而产生小号2(n)的。您实际上必须编写此代码B,但是直到您的挑战安全后再将其透露(请参阅下文)。0.5 * (length A)

警察提交的材料必须包括语言名称,完整的代码,的字节数,在X的多少变化来得到他们的秘密值码,和所选择的小号1小号2的序列号。您可以选择每个序列是0索引还是1索引,但是请在提交时指定。

要破解特定的提交内容,强盗必须提供使用相同语言(和版本)的程序C,该程序产生S 2(n),并且Y字符与A分开(带有Y <= X)。强盗不一定需要找到警察(秘密地)产生的完全相同的B代码。

获胜和得分

如果您的警察答案在7天内(168小时)没有被破解,则可以显示自己的B解决方案,这时您的答案被认为是安全的。只要您不公开解决方案,即使7天已经过去,它也可能会遭到强盗的破解。如果您的答案确实被破解,请在答案的标题中指出,并提供指向相应强盗答案的链接。

警察会以最短的A值提交完整的陈述来获胜。如果并列,则最小的X将用作决胜局。如果仍然并列,则较早的提交将获胜。

进一步规则

  • 您不得使用任何内置函数进行散列,加密或随机数生成(即使您将随机数生成器植入固定值)。
  • 允许使用程序或函数,但代码不得为摘录,并且不得假定为REPL环境。
  • 您可以采用任何方便的格式输入并提供输出。两个序列的输入/输出方法必须相同。
  • Levenshtein距离这一挑战的权威计算器是Planet Calc上的计算器。
  • 除了作为一个CNR的挑战,这是因此所有往常一样打高尔夫球规则。

另外,请确保如果您更改了此问题中的某些内容,则可以更新强盗。
mbomb007 '17

如果一个警察将一个函数/变量命名为相对于生成序列的实际代码而言非常大怎么办?在这种情况下,可以创建任何序列,并且其lev距离小于(0.5*len(A))
hashcode55

@ hashcode55两件事-1)不可能成为赢得警察线索的好人选。2)如果那样巨大,也为强盗破解提供了很大的余地。
AdmBorkBork

1
这是代码高尔夫球,因此所有常见的打高尔夫球规则都适用 ”,这是否意味着代码A必须尽可能打高尔夫球,还是可以故意以太冗长/笨拙的方式编写代码A,以使其与代码B更相似?
smls

Answers:


10

Brain-Flak,28字节,距离4,A002817A090809 破解

此答案使用1索引

(({({}[()])}{}){({}[()])}{})

在线尝试

对于任何有兴趣的人,都有27475个有效的Brain-Flak程序,该程序距Levenshtein的距离为4,距离27707的距离为4或更小。因此,在消费级计算机上采用蛮力解决方案是可行的。


如果您使用X = 4而不是,则阅读起来可能会更短,更快Levenshtein distance of 4
mbomb007 '02

1
@ mbomb007当挑战使用一堆字母变量代替我试图避免混乱的事物时,我个人会感到困惑。我现在把它缩短了,希望不会造成任何混乱。
小麦巫师

耸耸肩。如果每个人都阅读了该问题,他们应该明白。X确实是他们需要知道的唯一变量。
mbomb007 '02

@ mbomb007虽然,这个问题也要求一个字节数。
DLosc


6

7,33个字符,13个字节,X = 10,A000124A000142,安全

171720514057071616777023671335133

在线尝试!

Levenshtein距离是根据字符来衡量的,因此我已经根据上面包含的字符来编写程序(并且在线尝试它!(包括语言本身,它很乐意运行以ASCII编码的程序))。但是,该程序使用7的子字节编码存储在磁盘中,这意味着该程序本身实际上是以下hexdump(因此长13个字节):

00000000: 3cf4 2982 f1ce 3bfe 13dc b74b 7f         <.)...;....K.

(由于Levenshtein距离是根据字符来衡量的,因此您不必在此处添加/删除/更改10 个字节,因此最好使用原始ASCII。)

编写的程序实现了A000124(三角数+1);任何破解都必须执行A000142(出厂)。这两个程序都从stdin接收输入(作为十进制整数),将其输出写入stdout,并将输入1视为序列的第一个元素(将输入2视为第二个元素,依此类推)。

希望X值非常高,这将使人们这次不再暴力执行程序(这在7中的警察和强盗条目中总是有风险的)。

解决方案

177172051772664057074056167770236713351353

在线尝试!

与原始的差异:

17 172051 405707 1 61677702367133513 3
17 7 172051 77266 405707 405 61677702367133513 5 3

我没有为这些工作方式做任何解释,因此需要花一些时间来进行解释,因为我将不得不从头开始进行弄清楚。希望最终会有一个解释。




3

Perl 6,13个字节,X = 1,A161680A000217

安全!

{[+] [,] ^$_}
  • S 1 = A161680 = 0 0 1 3 6 10 15 21...=零,后跟三角数。
  • S 2 = A000217 = 0 1 3 6 10 15 21 28 ...=三角数。
  • 零索引。

在线尝试!

(确认可与在TIO上运行的Perl 6版本一起使用。)

{[+] [\,] ^$_}

原始作品的工作方式:

{           }  # A lambda.
          $_   # Lambda argument.                     e.g. 4
         ^     # Range from 0 to n-1.                 e.g. 0, 1, 2, 3
     [,]       # Reduce with comma operator.          e.g. 0, 1, 2, 3
 [+]           # Reduce with addition operator.       e.g. 6

解决方案的工作方式:

{            } # A lambda.
           $_  # Lambda argument.                     e.g. 4
          ^    # Range from 0 to n-1.                 e.g. 0, 1, 2, 3
     [\,]      # Triangle reduce with comma operator. e.g. (0), (0,1), (0,1,2), (0,1,2,3)
 [+]           # Reduce with addition operator.       e.g. 10

利用了数字运算符(如加法)将列表视为其元素数的事实,因此在示例中,总和为1 + 2 + 3 + 4 = 10

是的,原始版本中的“用逗号减少操作符” no-op有点像代码高尔夫球规则,但我更喜欢将其视为一种愚蠢的算法,已尽可能地使用它(空格等)。这是什么... :)


如果我有时间或喜欢(以及对perl的了解),这就是乞求暴力。
Rohan Jhunjhunwala'2

它已经存活了足够长的时间,被标记为安全
fəˈnɛtɪk




1

WolframAlpha,18个字节,X = 1

被math_junkie破解了!

(sum1to#of n^1)*2&

有时WolframAlpha实际上将能够以函数形式显示这样的纯函数(其他时候会感到困惑)。但是可以使用给定的输入(例如(sum1to#of n^1)*2&@5yields)来愉快地调用它30

S1 = A002378(代号)

S2 = A000537(第一个n立方体的总和)

这两个序列都是0索引的。




1

Javascript,15704字节,2,A059841A000004的距离- 破解

这个解决方案非常长,因此您可以在github gist上找到完整的代码

原始答案(此答案)为1索引。(我知道这太长了,只是为了好玩。)


破解。另外,添加绝对无用的代码!+ []-(!+ [])并不是真正符合规则的精神
fəˈnɛtɪk

大家知道,这个答案给这个挑战的OP带来了一些问题。显然,这导致整个页面被阻止,因为它看起来像是粗略的JavaScript。您能否将代码放在外部链接中?(要点,pasedump等)
DJMcMayhem

实际上,我本人已将其概括。如果您希望将代码放在其他地方,如果我超出了范围,请随时再次对其进行编辑。
DJMcMayhem

我猜想!+ []-(!+ [])确实做到了这一点,因此您不能只反转转换。但是其他一些垃圾只会使其更长。等效代码仅为15640字节。
fəˈnɛtɪk



0

使用Javascript(ES6),距离为1,A000079A000004 - 破解

as=function(){ return 2*2**((11)*-1*~arguments[0]/11-(4-(as+[]).length%89))-(as+[]).length%7}

原始答案(此答案)基于0。现在已经破解了,这是原始的B函数:

as=function(){ return 2*2**((1^1)*-1*~arguments[0]/11-(4-(as+[]).length%89))-(as+[]).length%7}

1
我能够使我的破解codegolf.stackexchange.com/a/109976/64505在两个不同的环境之间行为不一致。
fəˈnɛtɪk


0

Java 7,Levenshtein距离4,A094683A000290破解

int x{double r=1;for(int i=0;i<42;i++)r=r/2+n/r/2;int k=(int)((int)n*(float)n/Math.pow(n,(Math.sin(n)*Math.sin(n)+Math.cos(n)*Math.cos(n))/2));return n%4%2==(int)Math.log10(Math.E)/Math.log((double)'H'-'@')?(int)r:k;}

0索引。
在这里尝试!


@LliwTelracs对前15个非负整数进行了此操作,请参阅我的最新答案。
peech '17

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.