Encontre o programa que imprime essa sequência inteira (thread dos ladrões)


20

Este é o fio dos ladrões. A discussão dos policiais vai aqui .

No segmento de policiais, a tarefa era escrever um programa / função que pega um número inteiro positivo (ou não negativo) e gera / retorna outro número (não necessariamente número inteiro). A tarefa dos ladrões é decifrar o código que os policiais usaram para produzir essa saída.

O código quebrado não precisa ser idêntico, desde que tenha o mesmo comprimento e quaisquer caracteres revelados estejam nas posições corretas. O idioma também deve ser o mesmo (os números de versão podem ser diferentes). A saída deve, é claro, ser idêntica.

No-ops podem ser usadas na solução de ladrão.

O vencedor do segmento de ladrões será o usuário que tiver quebrado mais envios até 7 de maio de 2016. Se houver um empate, o usuário que tiver quebrado os envios com o código combinado mais longo vencerá.

A submissão deve ser formatada da seguinte forma:

Idioma, nn caracteres (incluindo link para resposta), nome de usuário do Cop

Código:

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

Saída

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

Explicação e comentários opcionais.


Essas regras aqui são diferentes dos policiais adotados, onde diz: No entanto, qualquer código-fonte proposto que produz o mesmo conjunto de saídas também conta como válido, desde que também seja encontrado no OEIS.
flawr

O que acontece se os exemplos corresponderem a várias séries OEIS? Isto apenas aconteceu com Adnan e me
FliiFe

@FliiFe Sob as regras atuais, qualquer código que corresponda ao código do policial e produza uma sequência OEIS cujos valores coincidem com os exemplos do policial é um crack válido.
Mego 11/04

Isso terminou? Existe um vencedor?
Andrew Savinykh

Respostas:



5

Hexagonia , 7 bytes, Adnan , A005843

?{2'*!@

ou

 ? {
2 ' *
 ! @

Experimente online!

Simplesmente dobra a entrada (e assume entrada positiva). O código é (pela primeira vez) simplesmente executado em ordem de leitura. O código usa três bordas de memória A , B , C com o ponteiro de memória começando como mostrado:

insira a descrição da imagem aqui

?    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.

Exatamente o mesmo com o que eu tinha! :)
Freira gotejante

@KennyLau Acho que a solução é única até trocar os papéis de Be C.
Martin Ender

4

J, 7 bytes, C 'O'Bʀɪᴇɴ

Código

2+*:@p:

Saída

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

Experimente-o com J.js .

Como funciona

A sequência A061725 é definida como a (n): = p n ² + 2 , em que p n é o (n + 1) ésimo número primo.

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.

Bom trabalho! Você entende o código mais do que eu fiz XD
Conor O'Brien


4

JavaScript, 10 bytes , user81655 , A033999

Eu acho que entendi. Sim. Este foi realmente difícil. Gosto da submissão, porque ela depende muito de precedências.


É a sequência A033999 :

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

Fonte

t=>~t.z**t

Explicação

Se você dividir esse código de acordo com as precedências do operador JavaScript, obterá:

  1. .(precedência 18 ) é avaliada primeiro e t.zretornará undefined.
  2. ~(precedência 15 ) tenta converter undefined, resultando em 0e retorna -1depois que não em bits.
  3. **(precedência 14 ) retornará -1 ^ t, onde té ímpar ou par , resultando em -1ou 1.

Demo

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

Experimente antes de comprar


Eu concederei uma recompensa de 100 representantes nesta apresentação bacana do policial.


1
Você está correto, parabéns! :)
user81655

Eu me considero versado em javascript, mas não tenho idéia de como isso funciona.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Adicionei uma explicação. Espero que isso explique bem o suficiente.
insertusernamehere

Por isso a força bruta não a encontrou. Eu usei um transpiler com precedência op errado> _ <
Conor O'Brien

3

Elemento , 7 bytes , PhiNotPi , A000042

_'[,1`}

Notas: Fui enganado pelo }por muuuuito tempo. Então também combina [.

Experimente online!


Como funciona:

_'[,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());
      }  }

Agradável! Eu estava tentando isso, mas não conseguia descobrir como ,parar de quebrar as coisas.
Fund Monica's Lawsuit

Meu truque era ,$produzir um 1, o que me deu uma desculpa para colocar o ,operador realmente confuso no meu programa.
PhiNotPi

Eu estava preso no }para tooooo longo :(
Leaky Nun


3

MATL , 9 bytes, copo , A022844

Código (com um espaço em branco no final):

3x2xYP*k 

Experimente online!

Encontrei as três correspondências a seguir com um script que escrevi:

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.",

Eu tentei fazer o primeiro, que é basicamente feito com YP*k:

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

3

Jolf, 3 bytes , Easterly Irk , A001477

axx

Consiste em um simples gato ( ax) seguido de um no-op. Não tenho certeza do que o policial estava procurando aqui.


Definitivamente, essa não é a função de identidade. É alertar a entrada. Existem funções de identidade reais: P
Conor O'Brien

3

Java, 479 bytes , Daniel M. , A000073

Código:

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 )));
    }
}

Se você sentir falta de personagens não revelados, eles serão substituídos por espaços.


1
Muito diferente do código original, mas ainda assim, parabéns!
Daniel M.


3

05AB1E , 4 bytes, Paul Picard , A001317

Código:

$Fx^

Experimente online!

Explicação:

$      # 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

A sequência é basicamente um triângulo binário de Sierpinski:

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

E traduz para a fórmula a (n) = a (n - 1) XOR (2 × a (n - 1))

Felizmente, lembrei - me deste :)


1
E é exatamente o mesmo, na verdade: D
Paul Picard



2

Reng v3.3 , 36 bytes , Cᴏɴᴏʀ O'Bʀɪᴇɴ , A005449

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

Saída

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

Explicação

Ignorei completamente os comandos pré-especificados, exceto o )porque não tinha espaço suficiente.

Os comandos realmente úteis estão aqui:

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

Esticado para uma linha reta:

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

Com explicação:

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 fórmula é a(n) = n(3n+1)/2.


+1 para </div>, uma tag de fechamento HTML que de alguma forma apareceu no código Reng.
user48538

@ zyabin101 Lugar errado?
Leaky Nun

Não. Eu apenas gosto de encontrar segredos escondidos no código. :-P
user48538

Bem, isso é no código do policial, então ...
Leaky Nun

2

05AB1E, 3 bytes , Adnan , A000292

LLO

Saída

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

Como funciona

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

O equivalente matemático é sum(sum(n)), onde sumestá summation.


Bom trabalho, que era a mesma solução exata :)
Adnan

2

Jolf, 11 bytes, QPaysTaxes , A000005

aσ0xxdxxxxx

Simples: acoloque o σ0(número de divisores de) xe coloque coisas inúteis no final.

Experimente online! O botão do conjunto de testes está um pouco quebrado, mas ainda mostra resultados adequados.

(Você poderia ter jogado até dois bytes! Apenas σ0teria feito muito bem.)


1
Uau! Le builtins minúsculos! 1
Adnan

1
Isso não é nada do que eu tinha, mas com certeza funciona. A minha foi longa porque você não mencionou a localização de divisores nos documentos.
Fund Monica's Lawsuit

@QPaysTaxes Acho que preciso atualizar os documentos: P Mas, falando sério, basta pressionar Ctrl + F no código-fonte;)
Conor O'Brien

Coloquei meu código original na minha pergunta, se você quiser vê-lo. Em retrospecto, eu deveria ter mostrado caracteres diferentes: P
Ação do Fundo Monica

2

Python 2, 87 bytes , Sp3000 , A083054

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

Não é tão difícil, na verdade. Apenas procurei por seqüências que atendessem às restrições até encontrar uma que pudesse ser gerada no espaço especificado.



2

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

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

Tenho certeza de que o código atual gera uma sequência mais complicada que essa, mas com apenas as duas saídas, essa sequência OEIS é simples e corresponde a elas.

Sem todos os caracteres ignorados, o algoritmo é justo x=>x?Math.pow(10,x-1):0.


2

05AB1E , 5 bytes, Luis Mendo , A051696

Código:

Ðms!¿

Explicação:

Ð      # Triplicate input.
 m     # Power function, which calculates input ** input.
  s    # Swap two top elements of the stack.
   !   # Calculate the factorial of input.
    ¿  # Compute the greatest common divisor of the top two elements.

Portanto, basicamente isso calcula gcd (n !, n n ) , que é A051696 .

Experimente online! .









1

Pitão , 70 bytes, FliiFe , A070650

Código (com versão ofuscada abaixo):

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)

Isso basicamente faz:

=^Q6%Q27

Calcula a (n) = n 6 % 27 , que é A070650 . Explicação:

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

Experimente aqui


Opa, não é esse. Atualizei minha resposta com outra resposta
FliiFe

Das regras, isso é válido. Parabéns !
precisa saber é o seguinte

Eu acho que eu posso dizer a seqüência agora, é A007770 (0 indexada)
FliiFe

@FliiFe Oh, eu nunca teria imaginado que: p
Adnan

Na verdade, se você sabe a seqüência, é facilmente spottable, mas se você não fizer isso, torna-se muito difícil
FliiFe

1

Pitão, 108, CAD97 , A005132

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

Código ofuscado:

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

Saídas:

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

Exatamente o que eu tinha. Esperava que fosse fácil, honestamente.
quer
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.