偷窃序列:警察


10

这是。这是警察的线程。有关强盗线索,请转到此处

自加入网站以来,我注意到了许多OEIS(整数序列在线百科)挑战。看来,我们要面对一次警察与强盗的挑战,才能一劳永逸地确定谁是在线整数序列的主人。

编辑:为了防止琐碎的回答,警察每次破解都会损失1/2分。另外,出于此挑战的目的,不允许使用恒定序列。这仅适用于此编辑后发布的解决方案。

警察

编写一个程序或函数,在没有任何输入的情况下,确定性地打印OEIS中的任何序列。通过删除某些字符子集,您的程序在以相同语言运行时必须能够打印不同的OEIS序列。新序列必须是全新的,而不仅仅是第一个序列具有不同的名称或具有不同的偏移量。这两个序列都不能只是重复的常数值。

您必须提供第一个功能以及OEIS序列的名称,以便可以验证正确性。如果您的语言的MAX_INT值或256(以较大者为准)附近的行为令人怀疑,则可以。

强盗

从某些Cop提交的文件中删除字符,以便您的新程序从OEIS输出任何其他序列。提供新功能以及新OEIS序列的名称。是一个确保您提交的内容有效的实用程序(即删除没有任何可笑之处的字符。不检查序列本身。)

最好从警察提交的文件中删除尽可能多的字符。如果另一个强盗(除了编写原始程序的警察以外的其他强盗)出现,并且找到了一个更短的解决方案,而该解决方案找到了另一个不同的序列,那么该强盗会窃取您的观点。(请注意,仅打掉角色并打印相同的顺序不足以窃取该点。)

规则与计分

如果一个星期后没有人能够破解您的解决方案,则可以通过提供第二个程序及其生成的序列名称,将您的解决方案标记为安全。

每次安全张贴,您都会得到1分;对于每次提交的内容,您将得到1分。每次破解提交,警察将损失1/2点。请注意,另一个强盗可以通过提供产生不同序列的较短程序,随时从破解的提交中窃取您的观点。

警察每人每种语言只能发布一个挑战。

在7月7日世界标准时间12:00得分最高的玩家获胜。



1
这个挑战极为相似。我不会欺骗它,但是我认为这可能是重复的。
FryAmTheEggman

1
@FryAmTheEggman啊,没看到。我认为海明距离= /删除并没有多大作用,强盗还有更多的回旋余地来找到意想不到的答案,但它比我想要的更相似。
vroomfondel

1
谢谢@rogaos。那是我对第一个问题的预期答案,所以不用担心。对警察有一些想法,希望我能在早上有几分钟的时间来解决它们。
毛茸茸的

3
我认为高尔夫与莱文斯坦的距离使这一点大为不同。警察必须考虑完全不同的潜在解决方案。
内森·梅里尔

Answers:



1

C,A000217,239个字节已破解

这不是所以我没有打扰。

#include <stdio.h>
#include <limits.h>
int main()
{
    int i, n, temp = 0;
    for(i = 0; i < INT_MAX; i++)
    {
        n = 0;
        temp = i;
        while(temp)
            n+=temp--;
        printf("%d, ", n);
    }
    return 0;
}

序列:https : //oeis.org/A000217


1
@rogaos从此代码破解的那个不是恒定的(至少,我知道的那个)
Govind Parmar

以字节为单位进行编辑,以方便强盗。
斯蒂芬


@rogaos我认为可以通过使其恒定而比我更好地破解它,但是我认为变得非恒定更有趣,因此我投票赞成将其作为恒定规则的例外
nmjcman101

1
@ nmjcman101足够公平,因为Govind并不希望它成为常数。在上面删除我的评论。
vroomfondel

1

Python 2,273字节,已破解

初始序列:A004442

import zlib, base64;exec(zlib.decompress(base64.b64decode('eJzLtDUAAAHoANc=')))
while True:print eval(zlib.decompress(base64.b64decode('eJwzAgAAMwAz')))^eval(zlib.decompress(base64.b64decode('eJwzjssEAAHBAPs='))),;exec(zlib.decompress(base64.b64decode('eJzL1LY1BAAC1AED')))

在线尝试!



2
超级破解(我认为)
斯蒂芬·

1

MOO,86字节,安全

a=0;b=1;while(a>-1)a=$math_utils:sum(a,a);a=max(1,a);notify(player,tostr(a));endwhile

打印2的幂(A000079)。

解:

a = 1; while(a> -1)a = $ math_utils:sum(a,a,a); notify(player,tostr(a)); endwhile(改为打印3的幂(A000244))



0

cQuents(较早的提交),10个字节,已破解

=0,1,1:z+y

这仍然是一种流行的WIP语言,但是我修补了解释器,使其正常工作。单击Github链接的语言名称。

这将输出Fibonnacci序列:A000045

说明:

(因为我没有文档,所以我不希望您阅读我的解释器代码)

=0,1,1      Set start to [0,1,1]
      :     Mode: sequence
       z+y  Each term is the previous two terms added together
            Because there is no input, output the whole sequence

如果仍然允许使用恒定序列,那么抢劫将非常容易。



这种语言很棒
vroomfondel

@rogaos尚未完成,无处可去,但谢谢:)
Stephen
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.