找到打印此整数序列的程序(Robbers的线程)


20

这是强盗的线索。警察的线索在这里

在警察线程中,任务是编写一个程序/函数,该程序/函数采用一个正(或非负)整数并输出/返回另一个数字(不一定是整数)。强盗的任务是解开用于产生此输出的警察代码。

破解的代码不必相同,只要它的长度相同并且任何显示的字符都位于正确的位置即可。语言也必须相同(版本号可以不同)。当然,输出必须相同。

强盗的解决方案中可以使用无操作。

强盗线程的获胜者将是到2016年5月7日破解提交数量最多的用户。如果出现平局,则破解合并代码最长的提交内容的用户将获胜。

提交的格式应为:

语言,nn个字符(包括答案​​链接),缔约方会议的用户名

码:

function a(n)
    if n<2 then
        return n
    else
        return a(n-1) + a(n-2)
    end
end

输出量

a(0) returns 0
a(3) returns 2

可选说明和注释。


这些规则与警察所说的不同:但是,只要在OEIS中也可以找到任何产生相同输出结果的提议源代码,则它们也视为有效。
瑕疵的2016年

如果这些示例与多个OEIS系列匹配,会发生什么?这与Adnan和我一起发生
-FliiFe

@FliiFe在当前规则下,任何与警察的代码匹配并输出OEIS序列(其值与警察的示例一致)的代码都是有效的破解方法。
Mego 2016年

完成了吗 有赢家吗?
Andrew Savinykh

Answers:



5

六边形7字节,阿德南A005843

?{2'*!@

要么

 ? {
2 ' *
 ! @

在线尝试!

只需将输入加倍(并假定为正输入)。该代码(一次)仅按读取顺序执行。该代码使用三个内存边沿ABC,其内存指针开始如下所示:

在此处输入图片说明

?    Read integer from STDIN into edge A.
{    Move memory pointer forwards to edge B.
2    Set edge B to 2.
'    Move memory pointers backwards to edge C.
*    Multiply edges A and B and store result in C.
!    Print result to STDOUT.
@    Terminate program.

与我所拥有的完全一样!:)
Leaky Nun

@KennyLau我认为解决方案在交换B和之前是唯一的C
Martin Ender

4

J,7个字节,CᴏɴᴏʀO'Bʀɪᴇɴ

2+*:@p:

输出量

   f =: 2+*:@p:
   f 0
6
   f 2
27

与尝试它J.js

怎么运行的

序列A061725被定义为A(N):= P ñ ²+ 2,其中p Ñ第(n + 1)素数。

2+*:@p:  Monadic verb. Argument: n

    @    Atop; combine the verbs to the right and to the left, applying one after
         the other.
     p:  Compute the (n+1)th prime number.
  *:     Square it.
2+       Add 2 to the result.

不错的工作!您对代码的了解比我对XD的了解还要多
Conor O'Brien


4

JavaScript,10个字节user81655A033999

我想我明白了。是的 这个真的很难。我喜欢提交内容,因为它很大程度上取决于优先级。


这是序列A033999

a(n)=(-1)^ n。

资源

t=>~t.z**t

说明

如果根据JavaScript运算符优先级拆分此代码,则会得到:

  1. .(优先级18)首先得到评估,t.z然后返回undefined
  2. ~(优先级15)尝试强制转换undefined,结果为0,然后-1按位否返回。
  3. **(优先14)将返回-1 ^ t,其中t奇数偶数,导致-11

演示版

console.log(
    (t=>~t.z**t)(0),
    (t=>~t.z**t)(1),
);

购买前尝试


我将为此酷警察提交100代表赏金。


1
没错,恭喜!:)
user81655 '16

我认为自己精通javascript,但是我不知道这是如何工作的。
Conor O'Brien

@CᴏɴᴏʀO'Bʀɪᴇɴ我添加了一个解释。希望它解释得足够好。
插入用户名

这就是为什么蛮力没有找到它的原因。我使用了操作错误优先级> _ <的转译器
Conor O'Brien

3

元素7个字节PhiNotPiA000042

_'[,1`}

注意:}长期以来,我一直被误导。因此它也匹配[

在线尝试!


怎么运行的:

_'[,1`}
_        main_stack.push(input());
 '       control_stack.push(main_stack.pop());
  [      Object temp = control_stack.pop();
         for(int i=0;i<temp;i++){
   ,         Object a = main_stack.pop(); //is actually zero
             main_stack.push(a.toChars()[0]);
             main_stack.push(a);
    1        main_stack.push(1);
     `       System.out.println(main_stack.pop());
      }  }

真好!我曾尝试过,但我想不出如何,停止事情的进行。
Fund Monica的诉讼

我的技巧是,$产生1,这给了我一个借口,将真正令人困惑的,运算符放入程序中。
PhiNotPi

我被困在}太久了:(
Leaky Nun


3

MATL9字节,烧杯A022844

代码(末尾带有空格):

3x2xYP*k 

在线尝试!

使用我编写的脚本找到了以下三个匹配项:

Found match: A022844
info: "name": "Floor(n*Pi).",

Found match: A073934
info: "name": "Sum of terms in n-th row of triangle in A073932.",

Found match: A120068
info: "name": "Numbers n such that n-th prime + 1 is squarefree.",

我试图做第一个,基本上是这样的YP*k

3x2x       # Push 3, delete it, push 2 and delete that too
    YP     # Push pi
      *    # Multiply by implicit input
       k   # Floor function


3

Java,479个字节Daniel M.A000073

码:

import java.util.*;
public class A{

    public static int i=0;
    public boolean b;

    static A a = new A();

    public static void main(String[] args){
        int input = Integer.parseInt(args[0]);

        LinkedList<Integer> l = new LinkedList<>();
        l.add(1);
        l.add(0);
        l.add(0);

        for(int ix = 0; ix<=input; ix++)if(ix>2){
            l.add(0,l//d
            .get(1)+l.peekFirst()+     l.get(2));
        }

        System.out.println(input<2?0:l.pop()
              +(A.i        +(/*( 5*/ 0 )));
    }
}

如果您错过未显示的字符,则将其替换为空格。


1
与原始代码有很大不同,但仍然恭喜!
Daniel M.


3

05AB1E4个字节,保罗·皮卡德A001317

码:

$Fx^

在线尝试!

说明:

$      # Pushes 1 and input
 F     # Pops x, creates a for-loop in range(0, x)
  x    # Pops x, pushes x and 2x
   ^   # Bitwise XOR on the last two elements
       # Implicit, ends the for-loop
       # Implicit, nothing has printed so the last element is printed automatically

该序列基本上是一个二进制谢尔宾斯基三角形:

f(0)=      1                    =1
f(1)=     1 1                   =3
f(2)=    1 0 1                  =5
f(3)=   1 1 1 1                 =15
f(4)=  1 0 0 0 1                =17

并转换为公式a(n)= a(n-1)XOR(2×a(n-1))

幸运的是,我记得这个 :)


1
这是完全一样的,确实是:D
保罗·皮卡德



2

礽V3.336个字节CᴏɴᴏʀO'BʀɪᴇɴA005449

iv:#+##->>)2%æ~¡#~
#>:3*1+*^##</div>

输出量

a(1) = 2
a(3) = 15

说明

除了,)因为我没有足够的空间,所以我完全忽略了预先指定的命令。

实际有用的命令在这里:

iv      >>)2%æ~
 >:3*1+*^

拉伸到一条直线:

i:3*1+*)2%æ~

附带说明:

i:3*1+*)2%æ~ stack
i            [1]      takes input
 :           [1,1]    duplicates
  3          [1,1,3]  pushes 3
   *         [1,3]    multiplies
    1        [1,3,1]  pushes 1
     +       [1,4]    adds
      *      [4]      multiplies
       )     [4]      shifts (does nothing)
        2    [4,2]    pushes 2
         %   [2]      divides
          æ  []       prints
           ~ []       halts

公式是a(n) = n(3n+1)/2


+1为</div>,以某种方式出现在Reng代码中的HTML关闭标记。
user48538 '16

@ zyabin101错误的地方?
Leaky Nun

不。我只是喜欢在代码中找到隐藏的秘密。:-P
user48538 '16

好吧,这是在警察的代码中,所以……
Leaky Nun

2

05AB1E,3个字节AdnanA000292

LLO

输出量

a(9) = 165
a(10) = 220

怎么运行的

LLO Stack
L   [1,2,3,4,5,6,7,8,9]                         range
 L  [1,1,2,1,2,3,1,2,3,4,...,1,2,3,4,5,6,7,8,9] range of range
  O sum all of them

数学相当于是sum(sum(n)),这里sumsummation


做得好,那是完全相同的解决方案:)
Adnan

2

Jolf,11个字节,QPaysTaxesA000005

aσ0xxdxxxxx

足够简单:a显示σ0(的除数)x,然后将无用的内容放在最后。

在线尝试!测试套件按钮有些破损,但仍显示正确的结果。

(您可以将其打高尔夫球到两个字节!σ0做得很好。)


1
哇!Le buildins微不足道!+1
Adnan

1
这与我的情况完全不同,但确实可以。我的时间太长了,因为您没有提到在文档中找到除数。
基金莫妮卡的诉讼

@QPaysTaxes我想我需要更新docs:P但认真的是,只需按Ctrl + F源代码即可;)
Conor O'Brien

如果您想查看原始代码,请输入原始代码。回想起来,我应该表现出不同的性格:P
Fund Monica的诉讼

2

Python 2,87 字节Sp3000A083054

n=input()
_=int(3**.5*n)-3*int(n/3**.5)########################################
print _

实际上并不难。只是搜索满足约束条件的序列,直到找到可以在给定空间中生成的序列。



2

JavaScript(ES6),119字节,CᴏɴᴏʀO'BʀɪᴇɴA178501

x=>(n="=>[[["|x|"##r(###f#n###;##")|n?Math.pow("#<1##].c####t.##pl##[####nc#"|10,"y([###(###(#]###)"|x-1|``):0|`#h####`

我敢肯定,实际的代码会生成比这更复杂的序列,但是只有两个输出,此OEIS序列就很简单并与它们匹配。

没有所有被忽略的字符,该算法为x=>x?Math.pow(10,x-1):0










1

Pyth70个字节,FliiFeA070650

代码(以下混淆版本):

DhbI|qb"#"qb"#"R!1Iqb"#";=^Q6+""s ]%Q27  ;.qlY+Q1Ih+""Z##;.q)=Z+Z1;@YQ
DhbI|qb"#"qb"#"R!1Iqb"#"#####+""s####2###;##lY+Q1Ih+""Z#####)=Z+Z1;@YQ (obfuscated)

这基本上可以做到:

=^Q6%Q27

计算出a(n)= n 6%27,即A070650。说明:

=^Q6       # Assign Q to Q ** 6
    %Q27   # Compute Q % 27
           # Implicit output

在这里尝试


糟糕,这不是一个。我用另一个答案更新了答案
FliiFe '16

根据规则,这是有效的。恭喜 !
FliiFe

我想现在可以告诉您序列了,它是A007770(索引为0)
FliiFe

@FliiFe哦,我永远不会猜到:p
Adnan

实际上,如果您知道序列,就很容易发现,但是如果不知道,它将变得非常困难
FliiFe

1

蟒蛇,108,CAD97A005132

def a(n):
 if n == 0: return 0
 f=a(n-1)-n
 return f if f>0 and not f in(a(i)for i in range(n))else a(n-1)+n

混淆代码:

def a(n):
 ###n####0######n#0
 f=a#######
 return f #f#####a###### f ####a(##f###i#i###a####n##else a#######

输出:

>>> a(0)
0
>>> a(4)
2
>>> a(16)
8
>>> a(20)
42

正是我所拥有的。老实说,这很容易。
CAD97
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.