Dans ce défi des flics et des voleurs , les flics penseront à un entier positif. Ils écriront ensuite un programme ou une fonction qui génère une valeur lorsque le nombre est fourni en entrée et une autre valeur pour toutes les autres entrées entières positives. Les flics révéleront ensuite le programme dans une réponse en gardant le numéro secret. Les voleurs peuvent trouver une réponse en trouvant le numéro.
Voici le hic: ce n'est pas du golf de code , au lieu de cela votre score sera le numéro secret avec un score inférieur étant meilleur. De toute évidence, vous ne pouvez pas révéler votre score pendant que les voleurs tentent toujours de le trouver. Une réponse qui n'a pas été révélée une semaine après sa publication peut voir son score révélé et être notée comme étant sûre. Les réponses sûres ne peuvent pas être fissurées.
Cela va probablement de soi, mais vous devriez pouvoir noter votre réponse. C'est-à-dire que vous devez savoir exactement quelle valeur est acceptée par votre machine de décision. Il ne suffit pas de savoir qu'il y en a un.
Utilisation des fonctions cryptographiques
Contrairement à la plupart des défis des flics et des voleurs qui vous demandent de ne pas utiliser de fonctions cryptographiques, ce défi les permet non seulement entièrement, mais les encourage. Vous êtes libre de créer des réponses de quelque manière que ce soit tant que vous essayez de gagner. Cela étant dit, les réponses utilisant d'autres méthodes sont également les bienvenues ici. Le but du défi est de gagner, et tant que vous ne trichez pas, rien n'est en jeu.
la source
A(9,9)
endroit où seA
trouve la fonction Ackerman.Réponses:
Tampio , fissuré
Courir avec:
Les instructions d'installation de l'interpréteur sont incluses dans la page Github. Veuillez indiquer si vous rencontrez des difficultés pour exécuter ceci.
la source
Perl 6 - Cracked!
Au sens strict, ce n'est pas une soumission acceptable car elle n'essaie pas très fort de gagner. Au lieu de cela, il espère offrir un puzzle agréable.
Il s'agit d'un programme de "mathématiques pures" qui est destiné à être brisé par la contemplation. Je suis sûr que vous pouvez forcer la solution (après avoir nettoyé une programmation bâclée que j'ai délibérément engagée), mais pour "crédit complet" (: -)), vous devriez être en mesure d'expliquer ce qu'il fait sur le plan mathématique .
Vous êtes censé casser la fonction f (). (C'est la fonction qui prend un nombre naturel et renvoie l'un des deux résultats.) Avertissement: Comme le montre @Nitrodon, le programme se comporte en fait de manière incorrecte et "accepte" un nombre infini d'entrées. Comme je n'ai aucune idée de la façon de le réparer, je remarque simplement pour les futurs solveurs que le nombre que j'avais en tête est inférieur à 70000 .
Si vous essayez d'exécuter cela dans TIO, il va expirer. C'est intentionnel. (Puisqu'il n'est pas censé être exécuté du tout!)
Enfin, j'ai essayé d'écrire du code raisonnablement clair. Vous devriez surtout pouvoir le lire couramment même si vous n'êtes pas familier avec la langue. Deux remarques seulement: les crochets [ op ] signifient réduire ("pliage", dans le jargon Haskell) une liste avec l'opérateur op ; et le sous appelé
postfix:<!>
définit en fait un opérateur postfix nommé! (c'est-à-dire utilisé comme5!
- il fait exactement ce que vous attendez). De même pour l'prefix:<∫>
un.J'espère que quelqu'un apprécie celui-ci, mais je ne sais pas si j'ai bien réussi. N'hésitez pas à me dénigrer dans les commentaires :—).
Essayez-le en ligne!
la source
JavaScript, fissuré
J'ai obscurci cela autant que possible, au point où cela ne peut pas rentrer dans cette réponse.
Essayez-le ici! Cliquez sur Exécuter, puis tapez dans la console
guess(n)
Renvoie undefined si vous obtenez la mauvaise réponse, renvoie true sinon.
Edit: D'une manière ou d'une autre, j'ai négligé la partie sur mon score étant le nombre. Eh bien, mon numéro est très très gros. Bonne chance pour le résoudre de toute façon.
la source
Gelée , score: ... 1 ( fissuré )
Essayez-le en ligne!
1 Vous vous attendiez vraiment à ce que je le révèle? Allons! Eh bien, il a un score de 134. Voilà, je l'ai dit!
la source
Ç€G
et la plage1...1000
en entrée: P5ȷ2_
partie non?1
trouve, puis j'ai collé la chaîne du début jusqu'à la fin1
dans un script Python et j'ai compté le nombre de zéros avant ...Python 2 (fissuré)
Je ne suggérerais pas la force brute. J'espère que vous aimez les générateurs!
Essayez-le en ligne!
Sorties
1
pour le nombre correct,0
sinon.la source
a
devrait l'êtrei+a
. Je l'ai réparé, mais il est de toute façon fissuré haussement d'épaulesHaskell , craqué
Ceci est purement basé sur l'arithmétique. Notez que
myfun
c'est la fonction réelle, tandis queh
c'est juste une fonction d'aide.Essayez-le en ligne!
la source
Java, cracké par Nitrodon
Je voulais essayer quelque chose de différent du hachage habituel et des fonctions aléatoires. Vous pouvez passer le nombre comme argument de ligne de commande. Affiche
1
si le nombre correct est donné et0
sinon. Pour les petits nombres, vous pouvez également l' essayer en ligne .Allusion:
Explication:
la source
Pyth, craqué par Erik l'Outgolfer *
J'ai essayé de masquer cela autant que possible.
Essayez-le ici!
la source
Octave, score: ???
Il est à peu près garanti qu'aucun autre numéro n'aura exactement les mêmes 20 nombres aléatoires à la fin de la liste
1e8
de nombres.Sorties
1
pour le numéro secret,0
sinon.J'ai exécuté cela dans Octave 4.2.0.
"Les mises en veille et autres ralentissements peuvent être supprimés lors du renforcement brutal."
Bonne chance avec ça :)
la source
Ly , score 239, fissuré
Essayez-le en ligne!
Je parie que personne ne connaît Ly ici, même si je sais à quel point cela pourrait changer facilement ... sueurs
Explication:
la source
Brain-Flak , score 1574 ( fissuré )
Essayez-le en ligne!
la source
dc
Essayez-le en ligne!
Remarque: Cette soumission a été modifiée depuis qu'elle a été soumise. La soumission originale (ci-dessous) était invalide et craquée par Sleafar dans les commentaires ci-dessous. (Une entrée de
1
donne lieu à la sortieyes
, mais il existe un autre nombre qui donne le même résultat.)Essayez-le en ligne!
la source
Ruby , safe, score:
Essayez-le en ligne!
Explication:
la source
PHP, sûr, score:
Sorties 1 si correct, 0 sinon.
Edit: Je ne pense pas que quiconque ait même essayé de casser cela parce que:
Explication:
la source
Swift 3 (53 octets) - Cracké
Comment faire ça? -
f(n:1)
.Testez ici.
la source
Python 3, score: ???
Avec un peu de chance, cela démontre à quel point c'est vraiment un problème:
Essentiellement, ce que ce code fait est de générer paresseusement toutes les chaînes possibles jusqu'à ce que l'une des chaînes ait un hachage qui correspond exactement
hash_code
ci-dessus. Le code non haché prend la forme de base de:Sauf
<insert number here>
est remplacé par un nombre et il y a des commentaires dans le code dans le but de rendre le code presque impossible à deviner.J'ai pris toutes les précautions pour m'assurer de ne pas bénéficier de ce post. Pour commencer, c'est le wiki de la communauté, donc je ne gagnerai pas de représentant pour cela. De plus, mon score est plutôt élevé, donc j'espère qu'une réponse beaucoup plus créative viendra et gagnera.
J'espère que vous n'êtes pas tous trop furieux de ma réponse, je voulais juste montrer pourquoi les postes de flics et de voleurs interdisent généralement les algorithmes de hachage.
la source
256 ^ 100
ou des2 ^ 800
chaînes. En attendant, il n'y a que2 ^ 512
des hachages 512 bits possibles. Cela signifie que les chaînes que vous parcourez sont plus nombreuses que les hachages possibles au moins2 ^ 288
un - un nombre 10 000 fois supérieur au nombre d'atomes dans l'univers. La probabilité que ce hachage particulier ne soit pas utilisé est incroyablement faible .Python 3 , 49 octets, fissuré par sonar235
Essayez-le en ligne!
la source
Java, score: 3.141.592 ( Cracked )
la source
Python 3, score 1 (sûr)
Pas une solution très intéressante, mais mieux un flic sûr qu'un flic mort.
Sorties
1
pour le nombre cible,0
sinon. L'entrée provient de stdin. La dernière partie (and int(original.decode())<1000
) n'existe que pour assurer une seule réponse, sinon il y aurait évidemment une infinité de réponses.la source
100000000
.C (gcc) , score ???
Puisque les solutions cryptographiques sont encouragées, ici. Exactement un entier positif imprimera quelque chose , tous les autres n'imprimeront rien. Cela prend beaucoup de temps et ne peut donc pas être testé en ligne.
la source
Java, 164517378918, sûr
la source
TI-BASIC,
score: 196164532non concurrentRenvoie 1 pour le numéro secret, 0 sinon.
Reportez-vous à la note sur cette page sur la
rand
commande pour plus d'informations.la source
Python 3 , score:?
Essayez-le en ligne!
Simple, mais peut prendre du temps à la force brute ;-) Dans l'attente d'une fissure rapide ;-)
Note de bas de page: les deux premières et les dernières conditions rendent la réponse unique.
BTW comment le score est-il calculé?
Indice 1
la source
Aceto , sûr
Génère TrueFalse si correct, FalseFalse sinon
Le nombre était
Essayez-le en ligne!
la source
C #, Mono, Linux, Alpha, score 1 (sûr)
Prudent. Je suis sérieux. Il existe de nombreux simulateurs alpha. Utilisez-en un avec une gigue ou cela ne se terminera pas.
Cela dépend du fait qu'Alpha est big-endian, ce qui fait que System.BitConverter fait la mauvaise chose si quelqu'un essaie cela sur x86 ou x64. J'ai écrit cette réponse pour démontrer la méchanceté du défi plus que toute autre chose.
la source