多种语言的Anagrams强盗的线


22

这是强盗的线程这个挑战

警察将选择一个OEIS序列,并用两种不同的语言编写两个完整的程序,当通过STDIN给出n时,该序列将生成序列中的第n个项目。这两个程序必须互为字母,这意味着每个程序都可以从对方的字母重新排列。

他们将提供OEIS编号,源代码以及所使用的一种语言的名称。

您必须找到原始警察提交的字谜的字谜,该字谜以与警察使用的语言不同的语言运行。要破解答案,您必须只找到能产生该序列并且是原文的字谜的任何语言和程序,而不一定是警察在考虑的答案。

您可以按字符代码输出,也可以在解决方案中包含STDERR,但前提是警察已表明他们的隐藏解决方案可以这样做。十进制输出到STDOUT始终是有效的破解。

因此,激励警察使其尽可能地难以使用其符号列表来找到完成任务的任何语言。

计分

裂缝最多的人将是本节的获胜者。每个解决方案的仅第一个裂缝将计入一个人的分数。

排行榜

非常感谢参与此挑战的每一个人。

这是目前的排行榜

Place  User             Score
-----------------------------
1      Adnan            3
1      Kritixi Lithos   3
1      Emigna           3
1      milk             3
5      Steven H.        2
5      Wheat Wizard     2
5      jimmy23013       2
8      ETH Productions  1
8      Dennis           1
8      alleks           1
8      Martin Ender     1
8      Oliver           1
8      Conor O'Brien    1

不知道我是否理解“字谜”部分,您能否详细说明一下?
缓冲区已读

@TheBitByte其他解决方案必须使用与原始字符相同的所有字符,但以不同的顺序重新排列。
小麦巫师

没有其他字符?
缓冲区已读

@TheBitByte是,并且不删除任何字符
Wheat

Answers:


9

05AB1E,38个字节,LoovjoA000290

nXtdief e():return X*X
pr e(input())##

在线尝试!

很可能不是预期的解决方案,但它可以工作。

说明

n      # square input
 X     # push 1
  t    # push sqrt(1)
   d   # push is_number(1.0)
    i  # if true do the rest of the code (1.0 is not a number so it will never execute)

1
1.0 is not a number?您能详细说明一下吗?
ETHproductions 2016年

1
@ETHproductions:函数is_number检查数字仅包含0-9。由于.不是数字,所以它为假。该函数可以使用更具描述性的名称:)
Emigna '16

8

Jolf,15个字节,AdnanA000290

*&"?!#$|<=@\^{}

在这里尝试!绝对不是预期的解决方案,但是,它可行。

说明

*&"?!#$|<=@\^{}
*                multiply
 &               the two inputs to this func, x, y: x && y
                 returns y if x and y, or the falsey argument.
  "?!#$|<=@\^{}  this string is always truthy, so the second arg is used.
                 two implicit inputs are taken, both equal to the first arg
                 so, this corresponds to *xx, which is x^2.



6

2sable,7个字节,Kritixi LithosA005843

码:

r^#ei2*

说明:

r         # Reverse the stack, which is a no-op
 ^        # XOR the input with itself, always leading to 0
  #       # If 1, break (which stops the program)
   e      # Compute input nPr input, which always leads to 1
    i     # If equal to one, do the following..
     2*   #   Multiply the input by 2.

在线尝试!


实际的代码只有2个字节真是太好了!
Kritixi Lithos

6

六角形,13字节,阿德南A002378

?"&\>=})\*!@<

在线尝试!

展开:

  ? " &
 \ > = }
) \ * ! @
 < . . .
  . . .

不是100%是否是原始的,因为左上角\未被使用。

这些<\>只是镜像,因此该程序实际上是完全线性的:

?"&)}=*!@

?          Read input.
 "         Move back and left.
  &        Copy input.
   )       Increment copy.
    }=     Move forward and right and turn around (to face the n and n+1 edges).
      *    Multiply.
       !   Print.
        @  Terminate.

5

V,13字节,DJMcMayhemA002275

v!:x]''"
@ai1

在线尝试!

这可能是作者打算使用的第一种解决方案。


说明

v!:x]''"   Does nothing
@ai1       inserts 1 a times

也许您应该让DJMcMayhem知道您已将其破解?;)
ETHproductions

我在聊天中告诉他的@ETHproductions我可能会在评论中再次告诉他。
小麦巫师

1
This might be the first solution in the language the author intended.发现。:)
DJMcMayhem

5

2sable,Conor O'BrienA000290

~*

在线尝试!

我不知道它是如何工作的,实际上只有一个程序可以满足要求,我只是勉强地找到了它所使用的语言。

浏览完文档后,我可以提出一个解释:

~         Push Input OR Input (always pushes the input)
 *        Multiply that by Input 

5

Pyth,26个字节,Steven H.A023443

码:

tQ.qly 7:esau0euii s uxC !

在线尝试

相当简单:

 Q                            Reads input
t                             Substracts 1 from it
  .q                          Quits program (implicit print)
    ly 7:esau0euii s uxC !    None of this ever plays a part...
                                I just thought it'd be fun to scramble it.

2
预期的解决方案!(当然,不包括混乱)
史蒂文·

1
棒极了!好主意。抱歉,不让您直接知道...回复太少。
alleks

没问题!恭喜。
史蒂文H.

5

Python 3,118个字节, 3,118 ETHproductions,A042545

s,a=801**.5-28,[0,0==0]
for i in range(int(input())):a+=[a[i]+a[-1]*int(1/s)];s=1/s-1//s
(print(a[-2]),) #.0fhlmop|

Ideone上进行测试

警察提交

i=input();s=1/(801**.5-28);a=[0,1]
for p in range(i):a+=[a[-2]+a[-1]*int(s)];s=1/(s-int(s))
print a[i]#,,,.//000fhlmo|

有什么不同

警察提交在Python 3中不起作用有两个原因。

  • Python 2的输入功能会自动评估一行输入,而Python 3的对应功能只是将输入返回为字符串。我们可以简单地调用int来解决此问题。

  • print 是Python 2中的一个语句,但它是Python 3中的一个函数。特别是,这意味着我们必须用括号将其参数括起来。

这意味着我们需要int()(),但是这些字符并不是注释的全部。这意味着我们必须进行一些更改。

而不是分数s,我们跟踪1 / s

ss=1/(801**.5-28)– 的初始化变为s=801**.5-28,保存字符1/()

a – – 的更新中a [-1]的因数变为,花费了字符。int(s)int(1/s)1/

ss=1/(s-int(s))– 的更新成为s=1/s-1//s,花费了字符1//,但保存了字符(int())

中保存的字符()(int())涵盖了将代码移植到Python 3所需的字符,但是获得它们会使我们付出很多代价1//。我们可以拿//从评论中获取,但是我们必须将其保存1在其他位置。

保存所需1内容的一种方法(唯一的一种?)是替换a1的初始化中0==0。这花费了这四个字符,但是我们可以00从注释中获取。

到目前为止,我们有以下代码。

i=int(input());s=801**.5-28;a=[0,0==0]
for p in range(i):a+=[a[-2]+a[-1]*int(1/s)];s=1/s-1//s
print(a[i]) #,,,.()0fhlmo|

要恢复=我们现在“欠”的其中一个,我们可以用一个赋值重写sa的初始化:s,a=801**.5-28,[0,0==0]此外,这还保存了一个;并花费a ,,可以将其添加到注释中或从注释中删除。

=可以通过不将输入存储在变量中来保存第二个range(int(input()))字符,即,代之以将字符保存在中i=。我们用在循环后为好,但元素一个是刚刚从右边第二个,所以我们可以替换i使用-2。出于同样的原因,a[-2]可以将循环体替换为i

现在,我们可以对工作的Python 3代码进行排列:

s,a=801**.5-28,[0,0==0]
for i in range(int(input())):a+=[a[i]+a[-1]*int(1/s)];s=1/s-1//s
print(a[-2]) #,.()0fhlmop|

但是,此代码也可以在Python 2中使用!解决此问题的一种方法是替换print(a[-2])(print(a[-2]),); 我们在注释中有我们需要的字符。如前所述,print是Python 3中的一个函数,因此它构造了元组None,)。但是,Python 2的print 语句是一个元组文字内部的SyntaxError


Dang,很好...也许我应该花更多的时间来编写无注释的版本。我将发布预期的解决方案。
ETHproductions 2016年

我已经创建了程序的修改版本,该程序可以在Python 2和3中使用,不使用注释,并且具有非常不同的(预期)解决方案。值得单独发布吗?
ETHproductions 2016年

如果它在Python 2和3中均可使用,则不是有效的解决方案。破解无法使用原始语言。
丹尼斯

我不明白 预期的破解不在Python中。
ETHproductions 2016年

哦,您的意思是提交新的警察。我以为我们在谈论与此不同的漏洞...当然,继续并发布它。
丹尼斯





3

05AB1E,27字节,boboquackA000012

1 1pif:
    if :
        rint( '1' )

在线尝试

怎么运行的:

1                     # push 1
  1                   # push 1
   p                  # pop (1), push is_prime(1)
    i                 # pop (is_prime(1), false), if is false so don't execute rest


2

凸,75字节,boboquackA004526

2/Q2 2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2*2*2*; 2*;                 2; 2; 2;

在线尝试

怎么运行的:

2  e# push 2
 / e# pop first 2, divide, push result
   e# push a bunch of garbage but discard it all with semi-colons (;)
  Q2 2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2*2*2*; 2*;                 2; 2; 2;

2

Dip,9字节,Kritixi Lithos

绝对不是预期的答案。

1^,-$)×1*

说明:

1$^,-)×   # Basically does nothing
       1* # Repeat "1" n times

现在剩下的就是我也要破解您的A000042答案!
Kritixi Lithos


1

05AB1E,25个字节,MegoA000583

码:

nnYi=put("");prit`Y**4`,X

说明:

n       # Square the input
 n      # Square the squared input
  Y     # Constant that pushes 2
   i    # If equal to 1, do the following:
    =put...

在线尝试!


哦,拜托,您击败了我12秒:)
艾米娜(Emigna)

@Emigna答案之间的时间太不可思议了:p。
阿德南

1
我也没有第一次按下该帖子,所以它们几乎是瞬时的:)
Emigna

1

,8字节,奥利弗A000042

(1J&F},1

说明

              #Implicit Input
(             #Start range loop
 1            #Push 1 to the stack
  J           #Join all the elements in the stack
   &          #End program
    F},1      #These are ignored

有趣的是,这是预期的语言!Dip是由Oliver创建的esolang。

从命令行测试案例和运行中

$python3 dip.py
Dip v1.0.0 by Oliver Ni.
>>> (1J&F},1
> 4
1111
>>> (1J&F},1
> 7
1111111

1

2sable,14字节,DopappA121377

Q@5 2*%6 8*+.&

在线尝试。

工作原理(或多或少):

Q@
  5              # Push 5
    2            # Push 2
     *           # Pop (2), pop (5), push 5*2=10
      %          # Pop (10), pop (input), push input%10
       6         # Push 6
         8       # Push 8
          *      # Pop (8), pop (6), push 8*6=48
           +     # Pop (48), pop (input), push input+48
            .&


1

,5字节,奥利弗A000012

`¸WW/

1无论输入是什么,该序列都将打印。Oliver的答案打印一个1.0。该程序还会打印一个1.0。这显然是预期的解决方案。

说明

`¸                  # push character `¸`
  W                 # pushes 1000000
   W                # pushes 1000000 also
    /               # divides the last two items in stack resulting in 1.0
                    # implicit output (1.0)

替代解决方案(@milk提供)

,5个字节

WW¸`/

在线尝试!

说明

                  // implicit input
W                 // pushes -1
 W                // pushes -1 also
  ¸               // calculates the LCM of the two numbers (which evaluates to 1)
   `              // finds its string representation
    /             // slices the string (so that it would evaluate to "1")
                  // implicit output

1
凸面的交替裂纹:WW¸//
牛奶

@牛奶谢谢!我在最新的编辑中添加了它
Kritixi Lithos

您的凸面程序有点像您认为的那样无法正常工作。截至目前,它两次按下-1,对它们进行LCM(将为1),找到字符串表示形式,最后"1"按每个[input]字符对字符串(将为)进行切片(由于输入为数字。)
GamrCorps

@GamrCorps现在怎么样?
Kritixi Lithos
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.