C'est un défi de flics et de voleurs . Pour le fil des voleurs, allez ici .
Ce défi implique deux séquences OEIS choisies par les flics - S 1 , S 2 - et comment ces séquences peuvent être jouées et masquées.
Le défi des flics
Votre défi en tant que flic est de choisir une langue disponible gratuitement et deux séquences OEIS. Ensuite, écrivez le code A dans ce langage qui prend l'entrée n et produit S 1 (n). Lorsque ce code est modifié par une distance Levenshtein de X caractères (avec X pas plus 0.5 * (length A)
), et transformé en code B dans la même langue, il doit alors produire S 2 (n). Vous devez réellement écrire ce code B , mais ne le révélez pas tant que votre défi n'est pas sûr (voir ci-dessous).
Les soumissions des flics doivent inclure le nom de la langue, le code complet A , le nombre d'octets de A , la valeur X du nombre de modifications à apporter à leur code B secret et les numéros de séquence S 1 et S 2 choisis . Vous pouvez choisir si chaque séquence est indexée 0 ou indexée 1, mais veuillez le préciser dans votre soumission.
Pour casser une soumission particulière, les voleurs doivent proposer un programme C dans le même langage (et la même version) qui produit S 2 (n) et les changements de caractère Y s'éloignent de A (avec Y <= X
). Les voleurs n'ont pas nécessairement besoin de trouver exactement le même code B que le flic (secrètement) a produit.
Gagner et marquer
Si votre réponse de flic n'a pas été révélée dans les 7 jours (168 heures), vous pouvez révéler votre propre solution B , moment auquel votre réponse est considérée comme sûre. Tant que vous ne dévoilez pas votre solution, elle peut toujours être piratée par des voleurs, même si les 7 jours se sont déjà écoulés. Si votre réponse est fissurée, veuillez l'indiquer dans l'en-tête de votre réponse, ainsi qu'un lien vers la réponse du voleur correspondant.
Cops gagner en ayant la soumission uncracked avec les plus brefs A . En cas d'égalité, le plus petit X sera utilisé comme briseur d'égalité. S'ils sont toujours à égalité, la soumission précédente gagnera.
Règles supplémentaires
- Vous ne devez utiliser aucune fonction intégrée pour le hachage, le chiffrement ou la génération de nombres aléatoires (même si vous amorcez le générateur de nombres aléatoires sur une valeur fixe).
- Les programmes ou les fonctions sont autorisés, mais le code ne doit pas être un extrait de code et vous ne devez pas assumer un environnement REPL.
- Vous pouvez prendre une entrée et donner une sortie dans n'importe quel format pratique . Les méthodes d'entrée / sortie doivent être les mêmes pour les deux séquences.
- Le calculateur définitif pour la distance de Levenshtein pour ce défi est celui-ci sur Planet Calc.
- En plus d'être un défi CnR, il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent.
la source
(0.5*len(A))
Réponses:
Brain-Flak , 28 octets, Distance de 4, A002817 , A090809CrackedCette réponse utilise l'indexation 1
Essayez-le en ligne
Pour toute personne intéressée, il y a 27475 programmes Brain-Flak valides avec une distance de Levenshtein 4 de ce programme et 27707 avec une distance de 4 ou moins. Une solution de force brute serait donc possible sur un ordinateur grand public.
la source
X = 4
lieu deLevenshtein distance of 4
.X
est vraiment la seule variable dont ils ont besoin de connaître.7 , 33 caractères, 13 octets, X = 10, A000124 → A000142 , Safe
Essayez-le en ligne!
La distance de Levenshtein est mesurée en termes de caractères, j'ai donc écrit le programme en termes de caractères qu'il contient ci-dessus (et Essayez-le en ligne !, y compris la langue elle-même, est heureux d'exécuter des programmes encodés en ASCII). Cependant, le programme est stocké sur le disque en utilisant le codage sous-octet de 7, ce qui signifie que le programme lui-même est en fait le vidage hexadécimal suivant (donc 13 octets de long):
(Étant donné que la distance Levenshtein est mesurée en termes de caractères, vous n'ajoutez / supprimez / changez pas nécessairement 10 octets ici, il est donc préférable de travailler avec l'ASCII d'origine.)
Le programme tel qu'écrit implémente A000124 (nombres triangulaires + 1); toute fissure doit implémenter A000142 (factorielles). Les deux programmes prennent l'entrée de stdin (sous forme d'entiers décimaux), écrivent leur sortie sur stdout et traitent une entrée de 1 comme signifiant le premier élément de la séquence (et une entrée de 2 comme deuxième élément, etc.).
Espérons que la valeur X très élevée empêchera les gens de forcer brutalement le programme, cette fois (ce qui est toujours un risque avec les entrées des flics et des voleurs dans 7).
La solution
Essayez-le en ligne!
Différences par rapport à l'original:
Je n'ai pas d'explications préparées sur la façon dont cela fonctionne, donc cela va me prendre un certain temps pour obtenir une explication, car je vais devoir le comprendre à partir de presque zéro. J'espère qu'il y aura éventuellement une explication.
la source
Pyke, Levenshtein distance de 1, A036487 , A135628 .
Fissuré!
Essayez-le ici!
la source
Perl 6 , 10 octets, X = 1, A000012 → A001477
Fissuré!
S 1 = A000012 =
1,1,1,1,1,...
= La séquence de tous les 1. (Indexé 0)S 2 = A001477 =
0,1,2,3,4,...
= Les entiers non négatifs. (Indexé 0)Essayez-le en ligne!
Confirmé de fonctionner avec Perl 6 version 2017.01 et avec la version Perl6 fonctionnant sur TIO.
( A pourrait être encore joué au golf
1***
- j'espère que c'est aussi autorisé tel quel.)la source
Perl 6 , 13 octets, X = 1, A161680 → A000217
Sûr!
0 0 1 3 6 10 15 21...
= Zéro suivi des nombres triangulaires.0 1 3 6 10 15 21 28 ...
= Les nombres triangulaires.Essayez-le en ligne!
(Confirmé pour fonctionner avec la version Perl 6 fonctionnant sur TIO.)
Solution
Comment fonctionne l'original:
Fonctionnement de la solution:
Exploite le fait que les opérateurs numériques comme l'addition traitent une liste comme son nombre d'éléments, donc dans l'exemple la somme est
1 + 2 + 3 + 4 = 10
.Et oui, le no-op "Réduire avec une virgule" dans l'original contourne un peu les règles du code-golf, mais je préfère le voir comme un algorithme idiot qui a été joué le plus possible (espaces blancs, etc.) pour ce que c'est... :)
la source
Gelée , 11 octets, X = 5, A005185 → A116881
Il s'agit d'un programme complet qui prend un entier comme argument de ligne de commande et imprime un entier.
Les deux séquences sont indexées comme sur OEIS, c'est-à-dire que A005185 est indexé 1 et A116881 est indexé 0.
Essayez-le en ligne!
la source
Javascript, 41 octets, distance de 3, A061313 , A004526 , Cracked
Essayez-le en ligne
Utilise une indexation basée sur 1, la solution utilise une indexation basée sur 0.
Encore une fois, une solution différente ...
la source
Perl 6 , 19 octets, X = 1, A000045 → A000035
Fissuré!
0 1 1 2 3 5 8 13 21 34...
= "Numéros de Fibonacci". ( Indexé 0 )0 1 0 1 0 1 0 1 0 1...
= "Période 2". ( Indexé 0 )Essayez-le en ligne!
(Confirmé pour fonctionner avec la version Perl 6 fonctionnant sur TIO.)
la source
WolframAlpha, 18 octets, X = 1Craqué par math_junkie!
Parfois, WolframAlpha sera en fait capable d'afficher une fonction pure comme celle-ci sous une forme fonctionnelle (d'autres fois cela devient confus); mais il peut être joyeusement invoqué avec une entrée donnée - par exemple, les
(sum1to#of n^1)*2&@5
rendements30
.S1 = A002378 (nombres proniques)
S2 = A000537 (somme des premiers
n
cubes)Les deux séquences sont indexées 0.
la source
Pyke, Levenshtein distance de 2, A008788 , A007526
Fissuré!
Essayez-le ici!
Soyons un peu plus dur, d'accord?
La première réponse est basée sur 1 et la fissure est basée sur 0.
la source
Javascript, 15704 octets, distance de 2, A059841 et A000004 - fissuré
Cette solution est extrêmement longue, vous pouvez donc trouver le code complet à ce github gist.
La réponse originale (celle-ci) est 1 indexée. (Je sais que c'est beaucoup trop long, c'est juste pour le plaisir.)
la source
Brain-Flak , 16 octets, distance Levenshtein de 4, A000217 et A002378 - Cracké par Martin Ender!
Essayez-le en ligne!
Cela devrait être assez facile à casser.
la source
Javascript, 30 octets, Distance de 4, A000290 , A000079 , - Cracked!
Indexation basée sur 0
La solution de @Kritixi Lithos était en fait différente de la mienne
Essayez-le en ligne
la source
x**2
et pas2**x
Javascript (ES6), la distance est 1, A000079 et A000004 - fissuré
La réponse originale (celle-ci) est basée sur 0. Maintenant qu'il a été fissuré, voici la fonction B d'origine:
la source
Perl 6 , 7 octets, X = 2, A059841 → A001477
Fissuré!
1 0 1 0 1 0 1 0...
= "* Période 2: Répéter (1,0)". (Indexé 0)0 1 2 3 4 5 6 7...
= "Les entiers non négatifs". (Indexé 0)Essayez-le en ligne!
(Confirmé pour fonctionner avec la version Perl 6 fonctionnant sur TIO.)
la source
Java 7, distance Levenshtein de 4, A094683 , A000290 , fissuré
0 indexé.
Essayez-le ici!
la source