Trouvez le programme qui imprime cette séquence entière (fil de voleurs)


20

Ceci est le fil des voleurs. Le fil des flics va ici .

Dans le fil de la police, la tâche consistait à écrire un programme / une fonction qui prend un entier positif (ou non négatif) et génère / renvoie un autre nombre (pas nécessairement entier). La tâche des voleurs consiste à déchiffrer le code utilisé par les flics pour produire cette sortie.

Le code craqué ne doit pas être identique, tant qu'il a la même longueur et que tous les caractères révélés sont dans les bonnes positions. La langue doit également être la même (les numéros de version peuvent être différents). La sortie doit bien sûr être identique.

Aucune opération ne peut être utilisée dans la solution de voleur.

Le gagnant du fil de voleurs sera l'utilisateur qui a craqué le plus de soumissions d'ici le 7 mai 2016. S'il y a égalité, l'utilisateur qui a craqué les soumissions avec le code combiné le plus long gagnera.

La soumission doit être formatée comme suit:

Langue, nn caractères (y compris le lien vers la réponse), nom d'utilisateur du cop

Code:

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

Production

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

Explication et commentaires facultatifs.


Ces règles sont différentes ici des flics lancés, où il est dit: Cependant, tout code source proposé qui produit le même ensemble de sortie compte également comme valide, tant qu'il se trouve également dans OEIS.
flawr

Que se passe-t-il si les exemples correspondent à plusieurs séries OEIS? Cela vient d'arriver avec Adnan et moi
FliiFe

@FliiFe Selon les règles actuelles, tout code qui correspond au code du flic et génère une séquence OEIS dont les valeurs coïncident avec les exemples du flic est une fissure valide.
Mego

Est-ce que c'est fini? Y a-t-il un gagnant?
Andrew Savinykh

Réponses:



5

Hexagonie , 7 octets, Adnan , A005843

?{2'*!@

ou

 ? {
2 ' *
 ! @

Essayez-le en ligne!

Double simplement l'entrée (et suppose une entrée positive). Le code est (pour une fois) simplement exécuté dans l'ordre de lecture. Le code utilise trois bords de mémoire A , B , C avec le pointeur de mémoire commençant comme indiqué:

enter image description here

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

La même chose avec ce que j'avais! :)
Leaky Nun

@KennyLau Je pense que la solution est unique jusqu'à l'échange des rôles de Bet C.
Martin Ender

4

J, 7 octets, Cᴏɴᴏʀ O'Bʀɪᴇɴ

Code

2+*:@p:

Production

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

Essayez avec J.js .

Comment ça fonctionne

La séquence A061725 est définie comme un (n): = p n ² + 2 , où p n est le (n + 1) ème nombre premier.

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.

Bon travail! Vous comprenez le code plus que moi XD
Conor O'Brien


4

JavaScript, 10 octets , user81655 , A033999

Je pense que je l'ai. Ouais. Celui-ci était vraiment dur. J'aime le mémoire parce qu'il s'appuie fortement sur les précédents.


C'est la séquence A033999 :

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

La source

t=>~t.z**t

Explication

Si vous divisez ce code en fonction des priorités de l'opérateur JavaScript, vous obtenez:

  1. .(priorité 18 ) est évalué en premier et t.zrevient undefined.
  2. ~(priorité 15 ) essaie de transtyper undefined, ce qui entraîne 0, et renvoie -1après pas au niveau du bit.
  3. **(priorité 14 ) reviendra -1 ^ t, où test impair ou pair , résultant en -1ou 1.

Démo

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

Essayez avant d'acheter


Je vais attribuer une prime de 100 rep sur cette soumission de flic cool.


1
Vous avez raison, félicitations! :)
user81655

Je me considère bien versé en javascript, mais je n'ai aucune idée de comment cela fonctionne.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ J'ai ajouté une explication. Espérons que cela l'explique assez bien.
insertusernamehere

C'est pourquoi la force brute ne l'a pas trouvé. J'ai utilisé un transpilateur avec une mauvaise priorité d'opération> _ <
Conor O'Brien

3

Élément , 7 octets , PhiNotPi , A000042

_'[,1`}

Remarques: J'ai été induit en erreur }pendant trop longtemps. Donc ça correspond aussi [.

Essayez-le en ligne!


Comment ça fonctionne:

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

Agréable! J'essayais ça, mais je n'arrivais pas à comprendre comment faire ,pour arrêter de casser les choses.
Fund Monica's Lawsuit

Mon astuce était de faire ,$pour produire un 1, ce qui m'a donné une excuse pour mettre l' ,opérateur vraiment déroutant dans mon programme.
PhiNotPi

J'étais coincé au }trop longtemps :(
Leaky Nun


3

MATL , 9 octets, bécher , A022844

Code (avec un espace à la fin):

3x2xYP*k 

Essayez-le en ligne!

J'ai trouvé les trois correspondances suivantes avec un script que j'ai écrit:

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

J'ai essayé de faire le premier, qui se fait essentiellement avec 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 octets , Daniel M. , A000073

Code:

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

Si vous manquez des personnages non révélés, ils sont remplacés par des espaces.


1
Très différent du code d'origine, mais quand même, bravo!
Daniel M.


3

05AB1E , 4 octets, Paul Picard , A001317

Code:

$Fx^

Essayez-le en ligne!

Explication:

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

La séquence est essentiellement un triangle binaire 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

Et se traduit par la formule a (n) = a (n - 1) XOR (2 × a (n - 1))

Heureusement, je me suis souvenu de celui-ci :)


1
Et c'est exactement le même, en effet: D
Paul Picard



2

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

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

Production

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

Explication

J'ai complètement ignoré les commandes prédéfinies, sauf )parce que je n'avais pas assez d'espace.

Les commandes réellement utiles sont ici:

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

Étiré en ligne droite:

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

Avec explication:

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

La formule est a(n) = n(3n+1)/2.


+1 pour </div>, une balise de fermeture HTML qui est apparue en quelque sorte dans le code Reng.
user48538

@ zyabin101 Mauvais endroit?
Leaky Nun

Nan. J'aime juste trouver des secrets cachés dans le code. :-P
user48538

Eh bien, c'est dans le code du flic, alors ...
Leaky Nun

2

05AB1E, 3 octets , Adnan , A000292

LLO

Production

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

Comment ça fonctionne

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

L'équivalent mathématique est sum(sum(n)), où sumest summation.


Beau travail, c'était exactement la même solution :)
Adnan

2

Jolf, 11 octets, QPaysTaxes , A000005

aσ0xxdxxxxx

Assez simple: alert le σ0(nombre de diviseurs de) x, puis mettez des trucs inutiles à la fin.

Essayez-le en ligne! Le bouton de la suite de tests est un peu cassé, mais affiche toujours des résultats corrects.

(Vous auriez pu le jouer à deux octets! Cela σ0aurait bien fonctionné.)


1
Hou la la! Le builtins minuscules! +1
Adnan

1
Cela n'a rien à voir avec ce que j'avais, mais ça marche bien sûr. Le mien était si long parce que vous n'aviez aucune mention de trouver des diviseurs dans les documents.
Fund Monica's Lawsuit

@QPaysTaxes Je suppose que je dois mettre à jour les documents: P Mais sérieusement, juste Ctrl + F le code source;)
Conor O'Brien

J'ai mis mon code d'origine dans ma question si vous voulez le voir. Rétrospectivement, j'aurais dû montrer différents personnages: P
Fund Monica's Lawsuit

2

Python 2, 87 octets , Sp3000 , A083054

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

Pas si difficile, en fait. Je viens de rechercher des séquences qui respectent les contraintes jusqu'à ce que j'en trouve une qui puisse être générée dans l'espace donné.



2

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

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

Je suis sûr que le code réel génère une séquence plus délicate que cela, mais avec seulement les deux sorties, cette séquence OEIS est simple et leur correspond.

Sans tous les caractères ignorés, l'algorithme est juste x=>x?Math.pow(10,x-1):0.


2

05AB1E , 5 octets, Luis Mendo , A051696

Code:

Ðms!¿

Explication:

Ð      # 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.

Donc, fondamentalement, cela calcule le pgcd (n !, n n ) , qui est A051696 .

Essayez-le en ligne! .









1

Pyth, 70 bytes, FliiFe, A070650

Code (with obfuscated version below):

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)

This basically does:

=^Q6%Q27

It calculates a(n) = n6 % 27, which is A070650. Explanation:

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

Try it here


Oops, that's not the one. I updated my answer with another one
FliiFe

From the rules, this is valid. Congrats !
FliiFe

I guess I can tell you the sequence now, It's A007770 (0-indexed)
FliiFe

@FliiFe Oh, I would never have guessed that :p
Adnan

Actually, if you know the sequence, it's easily spottable, but if you don't, it becomes really hard
FliiFe

1

Python, 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

Obfuscated code :

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

Outputs:

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

Exactly what I had. Expected it to be easy, honestly.
CAD97
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.