寻求秘密交换序列


19

这是一个挑战,可以在此处找到强盗线程。

您的任务是编写一些输出OEIS序列的代码,并在代码(A______)中包含该序列的名称,并在代码中的序列名称更改为第二个序列的名称时输出另一个单独的序列。

这是Haskell中适用于A000217A000290的示例

f x|last"A000217"=='0'=x^2|1>0=sum[1..x]

在线尝试!

然后,您将揭示两个序列之一,而代码则将第二个序列保密。强盗将尝试找出隐藏的序列。如果强盗设法确定您的顺序(或符合条件的其他顺序),您的答案就会被破解。如果在发布答案的一周内没有这样做,则可以将答案标记为“ 安全”,并提供预期的验证解决方案。 安全答案无法破解。

输入输出

这里取

您的代码可以是一个函数或完整的程序,它通过标准输入法采用n并输出序列的第n个项,该项的第n个项由OEIS页面上提供的索引进行索引。

您必须支持该序列的OEIS b文件中提供的所有值,而不支持b文件中没有的任何数字。

计分

分数将是代码中的字节数,字节越少越好。


1
分数将是代码中的字节数,字节越少越好。-那么为什么没有标记的代码高尔夫
Xcoder先生17年

我忘记了@ Mr.Xcoder。不要过多地阅读这些东西;)
小麦巫师》

那么代码应该输出一定长度的序列(是否已定义?)或序列的第n个元素?
死负鼠宝

@DeadPossum n个词
Xcoder先生17年

@WheatWizard猜我在找别的地方,但是要监视。我的坏人
死负鼠,

Answers:



5

Python 3,62个字节,A017016破解

n=int(input())
print(sum(1for i in"A017016"if i>"0")*-~n//-~n)

在线尝试!


我试图使其尽可能地变得模糊...
Xcoder先生17年

1
@officialaimm我是故意这样做的。我想对此进行混淆。我不太在乎打高尔夫球,因为Python不会赢得代码高尔夫球混淆竞赛:p
Xcoder先生17年


顺便说一句,这是预期的解决方案吗?
totallyhuman

@totallyhuman是的,这是适当的解决方案。
Xcoder先生17年

4

Japt,13字节(破解

如果还有其他人想刺探它,至少还有一个解决方案。

p#A000012uCnG

在线尝试
A000012


说明

#Japt中的一个字符后给我们该字符的字符代码,因此#A=65,数字的其余部分将附加到该字符后,给我们6500001265000290

u是取模方法(与之不同的%是,它始终返回正数)。

n方法从传递给它的数字中减去要应用的数字。CG分别是11和15的Japt常数。因此,CnG给我们4

我们现在有65000012%4=065000290%4=2。该p方法将应用于它的数字(在这种情况下,即为输入整数U)提高为传递给它的数字的幂,从而为U**0和提供2个最终公式U**2



1
@officialaimm:正确,做得很好。
毛茸茸的

由于我不了解Japt,所以我假设要提高的能力是(sum_of_numbers_in_oeis(excluding 'A') + 1)%4。:D
Officialaimm

1
@officialaimm:我喜欢看到强盗用他们不知道的语言来挑战挑战:)我实际上发布了这个,希望是会遇到不熟悉Japt的人来破解它。
毛茸茸的

如果允许输入字符串(1索引),则A020338也可能工作
Bubbler '18

4

MATL30 29字节(破解

A077430I\2-|Gw^1Mwx*10&Ylk1+&

A077430

在线尝试!

-1字节感谢@Sanchises


1
现在应该修复
Cinaski '17

1
只是一个提示:您可以将`3`替换I为1个字节。
桑奇斯

@Sanchises谢谢!不知道I被初始化为3
Cinaski

2
您应该检查表3。除了l(1)和O(0)之外,几乎不必在MATL程序中使用空格。值得一提的是,也请查阅表7,其中包含许多有用的预定义常量(尽管请注意,例如4X2Z%具有简写形式1Z%
Sanchises



3

Python 2,43字节,A000079破解

在线尝试

lambda n:((sum(map(ord,'A000079'))*2)%8)**n


@TheLethalCoder好吧。它很合适,但不是我选择的那个。另外,我在您发表评论之前进行了修改,但不再适合
Dead Possum

5
您发布后更改了吗?有点不公平。
TheLethalCoder

@TheLethalCoder我这样做是为了保护它免受这种假阳性序列的侵害:C
死负鼠

1
我不知道如何编辑条目,但是根据操作规范中的规则,“ 如果强盗设法确定您的顺序(或符合条件的其他顺序),您的答案就会被破解 ”,仅供参考。
alleks

3

C#,75字节,(破解

n=>{int r=1,e=3-0xA000244%2;for(;n>0;e*=e){r*=(n%2>0?e:1);n>>=1;}return r;}

000

在线尝试!



@Lynn是什么把它送走的?第一个顺序?
TheLethalCoder

3
您使用的是OEIS编号% 2-因此该程序实际上只能执行两件事,具体取决于结果:一为0,一为1。因此,我将一个奇数放在了它的位置,挑战也随之而来。
林恩

@Lynn Ah想,没想到混淆那部分。
TheLethalCoder

2

Python 2,53 字节,A000012 [破解]

lambda x:len(`x**(sum(map(int,'A000012'[1:]))==22)`) 

在线尝试!

下一个序列是A055642(十进制数字的长度)。因为OEIS中的数字之和等于22,所以数字可以自动计算。len(...)因此计算出“ A055642”的输入数字的实际长度。对于序列A000012(或A055642以外的任何序列)。len始终等于1,因为计算的数字将为'1'。



1

Python 3,65字节,A000027,破解

a=lambda a,n=((int("A000027",11)-0x103519a)%100%30+1)/2:a//(14-n)

耶疯狂的算术!


嗯,A004526给出的结果n=12看起来不错,但是结果只有一个索引 -我是因为虫子而开裂还是因为非常聪明的红鲱鱼而摔倒了?
乔纳森·艾伦,

都不;您误解了A004526,其中明确指出a(n) = floor(n/2);列出的序列以0开头。但是,这是预期的解决方案。
pppery

哦,是的,偏移量-正确(谢谢),谢谢!那么破解即可。
乔纳森·艾伦

1

Smalltalk,148个字节,安全!

|x o|x:=(16rA018253*0.00861-1445345)floor. o:=OrderedCollection new. 1 to:x/2 do:[:i|x\\i=0 ifTrue:[o add:i]].o add:x.^o at:stdin nextLine asInteger

A018253

以整数作为输入,序列基于1。

预期的第二个序列是A133020。在A018253的文章中,是指向与数字除数有关的序列的条目列表的链接。在该列表中,A133020平方数下:100²。如果要查看整个序列,请在代码中Transcript show: o printString; cr.的return ^语句之前插入。


1

Haskell,226个字节,安全!

不知道是聪明还是丑陋,也许两者都...

o n=read.pure.(!!n)$"A001906"
m::Integral a=>[a->a->a]
m=[const,(+),(-),(*),div,(^)]++(flip<$>m)
l=o 1:o 3-o 1:zipWith(m!!(o 6+o 3-o 2))(tail l)l
f=(l!!).((m!!(o 4+o 5+o 6-2*o 1-o 2))$sum[1|n<-[1..6],odd(o n)]).((m!!o 6)$o 3)

因此,现在它计算A001906,但它应该能够生成很多序列。

在线尝试!


解决方案:A131078

想知道这是否太困难或没有人尝试过?

o 1to o 6是序列号的数字,m是操作列表。l是递归定义的无限列表,其中前两个值是从序列号导出的,其余的是前一个值使用的固定操作从前两个值计算出来的m。对于A001906,可以将定义简化为

l=0:1:zipWith(flip(+))(tail l)l

(flip(+))(通常)与相同(+),我们得到了斐波那契数的一个众所周知的定义(但不是最短的定义)。此递归方案可以直接计算A001906,但需要的操作比中的操作更为复杂m。又如:使用初始值12与操作(*)给出系列A000301。当序列号替换为时,由我们的代码计算得出?103206

最后,该函数f索引到list中l,但仅在对输入进行一些转换之后。对于A001906,中间部分减小为(*)2,因此我们仅在偶数位置获得斐波那契数。右边的部分变成flip const 1,这是身份功能,不会进一步干扰。

对于溶液A131078,的初始值l10,且操作flip const,它可以让l1,0,1,0,...。中间部分f变成(flip div 4),导致1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,...。这看起来是一个不错的答案,但是后来我看到A131078从开始n=1,所以我在的右侧添加了fflip(-)1减去一个。

我的想法是通过使用m序列号中的数字并对其进行索引来使其有点混乱,然后使其变得更加混乱(复杂的术语)以使其起作用(也许我没有花足够长的时间寻找替代方案);然后它变得更加模糊(在的右侧f)以使其真正起作用。我仍然认为,一些猜测和尝试可能会破解它。


我尝试了一些序列,它们通常除以零错误,负指数错误或看起来永远运行。老实说,Haskell吓坏了我,只是似乎无法绕开我的头,我猜在程序上花了太长时间。

如果您只是尝试,则存在一个额外的问题,即给定时,即使解决方案也会出现“负索引”错误0。很好,因为它仅始于1!从开始1也应该消除一些“被零除”的错误。我为永远运行的示例感到惊讶。在这些情况下,也许索引转换会产生非常大的价值……
Christian Sievers


0

Python 3.6,114字节,已破解

from random import*
g=lambda n:eval(''.join(Random("A005843").choices('n8-9+17n#8*+26%n1 32-3+4-545*-#6*7',k=34)))

A005843

g(n) 返回n> = 0的序列的第n个值。

random.choices(s,k)是Python 3.6中的新增功能,它返回k从中s替换的项目。


感觉非常像加密/散列。
pppery

@ppperry-如果违反规定,我将其删除。
RootTwo


0

芯片,67字节,由Yimin Rong 破解

2D5B#{*Cm49!}E-7
(A000012d#,zkmsh
b-\6/e2)[1Zv^~^S
33a#kcf3g88taz1@

A000012。有点厚脸皮,是的。

在线尝试!

使用字节的I / O,所以我很好,并建立了一个bashy / pythony包装器。


替代序列为A060843在线尝试输入1..4

Yimin Rong弯腰对,如此短的Chip程序只能计算非常简单的东西。原始序列为全1,备用序列为繁忙的海狸编号,其中只有4个已知。

这些数字1, 6, 21, 107只是对输入进行了硬编码1..4

使用Chip应对这一挑战的有趣之处在于,数字0- 9不是数字,而是逻辑元素。具体来说,0- 7是寻址堆栈头部的八位,8并且9是读和写切换。这使它变得更加有趣并且更加模糊。

一个潜在的赠品是仅A-D出现,这意味着我们只有4位用于索引序列。这意味着最多可以有16个不同的值。实际上,只有A- C实际上用于替代序列,最多提供8个不同的值。

对于任何可能感兴趣的人,这里都是相同的代码,其中删除了无操作和未使用的元素:

   B  *C 49!
 A000012d ,z  s
b-\6/e   1Zv-~^S
`3a`-cf3g`8taz1

只是为了排除明显的问题,您不是想以空序列偷偷摸摸,例如A290000?从技术上讲,由于您的代码对于零输入不返回任何内容,因此此序列将匹配!

哈,在另一个序列中至少有一个值:)另外,我应该说,我将其设计为1索引的,因为这就是OEIS索引的方式。
Phlarx

(没关系,我发现了反例。我的代码仍为1索引。)
Phlarx

所以我做了更多的研究,而无所事事是python的错。它没有给出任何零输出,所以我的代码从未运行过。我已经在TIO链接中修复了该问题。(让位长为1字节的下限)。
Phlarx

1
破解
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.