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.

Leaky Nun
la source
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.
Martin Ender
la source
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.
Dennis
la source
Bon travail! Vous comprenez le code plus que moi XD
Conor O'Brien
4

05AB1E , 5 octets , Adnan , A001788

Læ€OO

Essayez-le en ligne! Cela utilise une autre définition donnée sur la page. Explication:

Læ€OO
L     range;      [1..n]
 æ    powerset;   [[], [1], ..., [1..n]]
  €O  mapped sum; [0, 1, ..., T(n)]
    O sum;        [a(n)]
LegionMammal978
la source
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.

insertusernamehere
la source
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());
      }  }
Leaky Nun
la source
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
Adnan
la source
3

Jolf, 3 octets , Easterly Irk , A001477

axx

Se compose d'un simple chat ( ax) suivi d'un no-op. Je ne sais pas ce que voulait le flic ici.

LegionMammal978
la source
Ce n'est certainement pas la fonction d'identité. C'est alerter l'entrée. Il existe de véritables fonctions d'identité: P
Conor O'Brien
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.

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

Rubis, 38 octets, histocrate , A008592

->o{(s="+o++o"*5).sum==03333&&eval(s)}

Cela pourrait être différent de la solution prévue car j'ai trouvé cela à la main.

xsot
la source
Bien fait! Solution prévue est similaire: "+f+=f"*5.
histocrate
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 :)

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

Jolf, 5 personnages , Cᴏɴᴏʀ O'Bʀɪᴇɴ , A033536

Code:

!K!8x

Production:

a(2) = 8
a(10) = 4738245926336
Leaky Nun
la source
C'était exactement la même réponse que j'avais. J'étais sur le point de le poster. :(
Fund Monica's Lawsuit
Aucune des deux réponses n'est l'original, mais elles sont fonctionnellement les mêmes.
Conor O'Brien
@QPaysTaxes Désolé :(
Leaky Nun
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.

Leaky Nun
la source
+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.

Leaky Nun
la source
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é.)

Conor O'Brien
la source
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é.

LegionMammal978
la source
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.

user81655
la source
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! .

Adnan
la source
2

PHP, 18 octets, insertusernamehere , A023443

Code:

echo$argv[1]+0+~0;

Production:

a(0) = -1
a(1) = 0
jimmy23013
la source
Très belle approche. Ma source est légèrement différente: echo$argv[1]+-+!0;. :)
insertusernamehere
2

PHP, 137 octets, insertusernamehere , A000959

Code:

for($s=range(1,303);$i<($t=count($s));$s=array_merge($s))for($j=($k=++$i==1?2:$s[$i-1])-1;$j<$t;$j+=$k )unset($s[$j]);echo$s[$argv[1]-1];

Production:

a(3)  =   7
a(7)  =  21
a(23) =  99
jimmy23013
la source
Nicely done. Your source is slightly different and you even saved one byte. :)
insertusernamehere
1

J, 8 bytes, Kenny Lau, A057427

Code:

(-%- )\.

Output:

a(0) = 0
a(1..29) = 1

I don't think this is intended. And I don't know why J had this behavior. But it works.

jimmy23013
la source
Gonna add one more restriction xd
Leaky Nun
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

Adnan
la source
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
FliiFe
la source
Exactly what I had. Expected it to be easy, honestly.
CAD97