Pour le défi principal des flics, cliquez ici
AVIS - Ce défi est maintenant terminé. Toutes les fissures qui sont publiées maintenant ne seront pas comptées dans le classement et la réponse acceptée ne changera pas .
Défi
Étant donné le programme d'origine, sa sortie et la sortie du programme modifié, vous devez savoir quels caractères doivent être modifiés, supprimés ou ajoutés pour obtenir la sortie attendue.
Lorsque vous piratez le code de quelqu'un, laissez un commentaire avec un lien vers votre crack sur sa réponse.
Formatage
# [<language>, <username of program owner>](<link to answer>)
## Description
<description of change and how you found it>
## Code
<changed code>
Gagnant
La personne qui a trouvé le plus de solutions gagne.
Classement
13 fissures:
- Dennis
8 fissures:
- Alex Van Liew
5 fissures:
- Sp3000
- isaacg
3 fissures:
- Luis Mendo
- jimmy23013
- Dom Hastings
2 fissures:
- mbomb007
- Sluck49
1 fissure:
- Le numéro un
- Jakube
- ProudHaskeller
- David Zhang
- samgak
- paul.oderso
- rayryeng
- mgibsonbr
- n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
- Stewie Griffin
- abligh
cops-and-robbers
Beta Decay
la source
la source
Réponses:
CJam, par Mauris
La description
Le code original de Mauris fait ce qui suit:
Aucun autre opérateur mathématique de CJam ne donnerait un nombre aussi élevé pour de petites entrées, il
:#
ne peut donc pas être modifié. Puisque#
, lorsqu'il est utilisé pour l'exponentiation, ne prend que des entiers en entrée,:i
il ne peut pas être supprimé également. Cela ne laisse qu'un seul endroit pour modifier l'entrée: la chaîne"f~"
.Quel que soit le nombre de caractères de la chaîne, le résultat sera une tour de puissance associative de gauche. CJam prend en charge les caractères compris entre 0 et 65535 (à l'exception des substituts), nous devons donc exprimer la sortie sous la forme b n × k × j , où b , n , k et j sont des entiers dans cette plage.
Le logarithme décimal de l'entier résultant du code modifié est légèrement plus petit que log 10 (2,44 × 10 242545 ) = log 10 (2,44) + 242545 , nous pouvons donc diviser cette valeur par les logarithmes de toutes les bases possibles pour trouver les valeurs appropriées pour n × k × j .
En réalité:
La comparaison des 8 premiers chiffres s'est avérée suffisante.
Cela signifie que nous pouvons exprimer la sortie comme 5 347 004 = 15625 57834 = 125 9 × 102 × 126 ,sorte qu'il suffit de remplacer
"f~"
avec"㴉"
ou"} f~"
.Code
ou
Notez que les espaces dans le code ASCII doivent en fait être un tabulateur.
Tenter d'exécuter ce code dans l'interpréteur en ligne est probablement une mauvaise idée, mais voici comment vérifier les résultats à partir de la ligne de commande:
la source
~f
quelque part dans le programme.Rubis, histocrate
La description
X changé pour être un tableau au lieu de scalaire en ajoutant
*
Changé le dernier
9
pour être une chaîne au lieu d'un nombre en ajoutant?
Le résultat est constitué d'un tableau avec un seul élément (
[9]
) multiplié 9 fois puis implosé avec"9"
comme séparateur.Code
la source
Python 2, muddyfish
La description
À travers des essais et des tribulations impliquant la factorisation de grands nombres et la recherche de facteurs conséquents, j'ai réalisé que changer le 87654 en 58116 serait suffisant. Ensuite, j'ai factorisé 58116 en 87 * 668. Ensuite, j'ai réalisé que 01234 = 668, donc je devais juste changer 87654 en 87 et supprimer complètement le 01234. Ceci est accompli avec un commentaire.
Code
la source
print sum(range(054321)*9876)*87#654)/01234
)Shakespeare, AboveFire
Dans la scène III, il faut changer Claudius en Claudio dans l'extrait de code suivant:
Code modifié:
En utilisant le compilateur lié par @AboveFire, cela s'imprime
11
.la source
Prolog, Fatalize
La description
Ajoutez deux
\
s.\
est la négation au niveau du bit et au niveau du\/
bit ou.Code
la source
MATLAB / OCTAVE, Stewie Griffin
Un peu d'arithmétique complexe.
la source
C, LambdaBeta
La description
Transformez
main(a,_)
enmain(_)
. Le premier argument de main est celuiargc
qui est initialisé comme1
.Code
la source
Python 2, rp.belrann
Modifiez la compréhension de la liste la plus externe en une compréhension d'ensemble. Crédit partiel à @ mbomb007, qui a éliminé toutes les solutions "ennuyeuses" (permutation
x
ety
contournement, peaufinage des opérateurs, changement de gamme).Explication:
Dans l'original,
[(x,y)[x%2]for x in[y for y in range(8)]]
génère la liste suivante:En effet, dans Python 2.7, la
y
compréhension dans la liste interne fuit dans la portée englobante à sa dernière valeur connue (qui, à la fin d'une plage, est 7). Ainsi, dans le tuple,y
est toujours 7.x
, cependant, parcourt la liste normalement, allant de 0 à 7. Quandx
est pair, il choisit la valeur dex
, quand il est impair, il choisity
(qui est toujours 7). J'ai remarqué que si j'incluais exactement un 7 et toutes les autres valeurs dex
, j'obtenais 19; puis j'ai réalisé que je pouvais transformer la compréhension extérieure en une compréhension d'ensemble, ce qui éliminerait toutes les valeurs en double et me laisserait exactement 19.C'était assez intelligent, je ne pense pas avoir déjà utilisé une compréhension d'ensemble auparavant. Gloire.
la source
print len('~'*sum([(x,y)[x%2]for x in[y for y in range(6)]]))
retourne21
. Attribuez simplement le code à une variable, puis imprimez si elle est égale à la chaîne souhaitée. Si vous voyezTrue
, vous l'avez craqué._
m'a trahi, je suppose.Jonas, Matlab / Octave
La description
J'ai remarqué que la réponse était
i^pi
, alors j'ai dû me transformersin
en un non.Code
s
->0
,n
->+
la source
Bash, Dennis
Code d'origine:
Sortie d'origine:
Code modifié:
Sortie modifiée:
Explication:
Dans Bash, vous pouvez générer une liste d'éléments séparés par des virgules à l'intérieur d'une paire d'accolades, comme ceci:
impressions
Ainsi, le code modifié imprime une liste de rien, les chiffres 1 à 9, rien.
la source
MATLAB, Luis Mendo
Code d'origine:
Nouvelle réponse:
La description:
Modifié
-sin
enpsi
, la fonction polygamma dans MATLAB. Le-
signe est remplacé parp
etn
est supprimé.la source
C, LambdaBeta
La description
Transformez
-1
en de*0
sorte que le résultat de la multiplication soit0
(une valeur fausse).Code
la source
Brainfuck, Kurousagi
La description
Supprimez le premier
>
et remplacez le premier<
par.
Testé sur brainfuck.tk . Notez que la sortie ne correspond pas à la poste kurousagi exactement , en raison de SE manger des caractères non imprimables.
Code
la source
Fantom, Cain
La sécurité par l'obscurité est une forme de sécurité très médiocre (surtout lorsque les deux méthodes sont côte à côte dans les documents Fantom et que toute personne qui sait à quoi ressemble un flotteur saura immédiatement quoi faire).
la source
CJam, par Basset Hound
Calcule e 25 .Essayez-le en ligne.
L'interprète en ligne donne un résultat légèrement différent dans mon navigateur, ce qui semble être un problème d'arrondi.
L'interpréteur Java imprime
7.200489933738588E10
, qui est la sortie souhaitée, mais dans un format différent.la source
Python 2, Sp3000
La description
Changé
01234
vers0x1234
etmin
vers9in
.Le fait
4669 = (01234-1)*sum(m<<m in R for m in R)
est trompeur.Code
la source
m<<m in(m,n)
, mais l'essentiel était de changer lemin
enin
.MATLAB / Octave, Stewie Griffin
La description
Cela a nécessité l'annulation de l'entrée dans la fonction anonyme
g
, ainsi que la modification du facteur d'échelle de lag
fonction à 2 au lieu de 7:Code
la source
Perl, abligh
La description
Ajouter un opérateur de répétition de chaîne,
x
et insérez un chiffre supplémentaire!Code
la source
Java, TheNumberOne
La description
Le programme est une implémentation unique
Random.next()
avec une graine initiale deInteger.MAX_INT
et tous les nombres hexadécimaux convertis en décimal. Changer la graine en complément deMAX_INT
génère la sortie:(puisqu'il doit y avoir exactement deux changements, choisissez n'importe quel type de changement sans opération: ajouter un espace quelque part, un point-virgule supplémentaire, etc.)
la source
Integer.MAX_VALUE
Integer.MAX_VALUE+1
Integer.MIN_VALUE
+1
mais comme je le faisais en Python, il a juste roulé en un long, ahaha. C'était ma première pensée, en fait.Brainfuck, AboveFire
ce programme est une modification de ce code me une réponse cookie. cette réponse fonctionne en pré-calculant d'abord une table de codes ascii utiles de caractères utiles, puis a trois instructions conditionnelles composées de trois boucles qui sont entrées en ayant un
1
dans la position correcte.le début de la façon dont j'ai cassé le code est que le motif répétitif dans la sortie modifiée est principalement ce qui est imprimé si vous entrez dans la troisième boucle avec le tableau décalé vers la gauche.
(les caractères supplémentaires sont marqués entre parenthèses)
la source
Python 2, muddyfish
La description
Passez
<<
à<>
(version obsolète de!=
) et0x156
à0156
, le point de code pour"n"
(qui apparaît 3 fois dans la chaîne de longueur 23).'<built-in function sum>'
).Code
la source
JavaScript, par Razvan
La description
La sortie modifiée est clairement le nombre naturel d'Euler, auquel on peut accéder comme
Math['E']
.En changeant
''
vers'3'
et32
vers36
,String.fromCharCode
génère leE
.Code
la source
Fantom, Cain
La description
L'indexation du tableau est déjà configurée, donc je dois juste faire un 55. Honnêtement, la partie la plus difficile a été de télécharger la langue.
Code
(Inséré une virgule,
0
->3
)la source
Shakespeare, AboveFire
PAS CORRECT - désolé :(
J'y approfondirai quand je rentrerai du travail Dans la valeur originale de Claudio est 1132462081 et la valeur de Claudius est 1
Dans la scène finale, la valeur de Claudio est imprimée deux fois,
ouvrez votre cœur x2 = valeur d'impression de l'autre personne sur scène (Claudio). Donc, si vous changez Claudius en Claudio (2 caractères) - la valeur de Claudius sera imprimée - qui est 1 - deux fois
la source
VBA par JimmyJazzx
Changé
IRR
pourMIRR
et changé5
à,
donc il y a 3 paramètres.J'ai trouvé cela en cherchant comment
IRR
fonctionne la fonction d'Excel . Il y avait un article: Comment la fonction MIRR d'Excel peut corriger la fonction IRR . Cela m'a informé. Une tentative intelligente, cependant. Je n'avais jamais utilisé VBA auparavant, donc c'était intéressant aussi.la source
Matlab / Octave, Jonas
La description
Dans la dernière ligne, ajoutez
'
pour transformerarg'
en chaîne'arg'
, qui sera alors interprétée comme des nombres ASCII. Et puis ajoutez un autre'
à la fin pour conserver le format de colonne.Le presque inutile
'
dans le code d'origine était l'indice principal. En outre, rétrospectivement, le fait qui aarg
été défini séparément (au lieu de directement dans lesin
ligne) aurait dû paraître suspect.Code
la source
bc, abligh
Simplement inséré les opérateurs mathématiques. Il a fallu environ 1 minute pour résoudre une fois que j'ai recherché ce qu'était bc et quelles opérations mathématiques il avait. La première chose à laquelle j'ai pensé était la division, mais il n'y avait pas de facteurs communs qui avaient l'air bien. J'ai donc immédiatement opté pour l'exponentiation et le module. Au moins 15 chiffres étaient nécessaires pour le module b / c de la sortie attendue. Après cela, j'ai deviné deux fois et l'ai trouvé.
la source
Lua, TreFox
La description
"_G" est la table globale, ce qui fait que "_G.load" fait référence à la fonction globale "load". La conversion d'une fonction en chaîne entraîne le renvoi de l'adresse de la fonction, qui est ensuite transformée en longueur de la chaîne par l'opérateur de longueur "#".
Code
De plus, puisque c'est mon premier post ici, je ne peux pas faire de commentaire sur la réponse originale.
la source
0x321a40c6d0
, pour une sortie finale de22
.load
, et je savais que je me référais_G
à la table des symboles mondiaux ... Je n'ai tout simplement pas réuni les deux.Python, rp.beltran
La description
J'ai remarqué que les lettres nécessaires étaient toujours 2 devant un chiffre. changer la troisième
\w
pour\d
obtenir toutes les bonnes lettres sauf les espaces.\D
était le seul\
groupe je pouvais trouver qui permettait les lettres et les espaces.Code
w
->D
,w
->d
dans l'expression régulière.la source
Pyth, isaacg
La description
Le code d'origine effectue les opérations suivantes:
Depuis 156490583352162063278528710879425690470022892627113539022649722 - 58227066 donne 156490583352162063278528710879425690470022892627113538964422656 , ce qui équivaut à 2 26 × 3 × 7 × 7477 × 381524422711 × × 17007550201751761 2288745700077000184147 , la sortie désirée peut être obtenue par le remplacement
^3y21
de ce qui est évalué à un diviseur de ce produit et est supérieure à 58.227.066 .Le
^
dans le code d'origine suggère que nous pourrions l'utiliser pour calculer une puissance de 2 , le 3 que nous pourrions calculer un diviseur convenable de la forme 3 × 2 n .Les deux sont trompeurs. Solutions avec une distance Levenshtein de 3 (
%CG^2 26
,%CG^y2 13
,%CG^4y13
) ou (4%CG.<3y13
) sont faciles à trouver, mais la solution à la distance 2 nécessite une approche différente.L'alphabet minuscule (
G
) a 26 lettres, donc son jeu de puissance (l'ensemble de toutes les séquences strictement croissantes de lettres minuscules) a 2 26 éléments. En remplaçanty2
paryG
, nous calculons cet ensemble de puissance.Nous pouvons récupérer la longueur de l'ensemble en remplaçant
3
parl
, ce qui nous laisse^lyG1
, c'est-à-dire 2 26 élevé à la première puissance.Code
Notez que cela ne fonctionnera que sur un ordinateur avec suffisamment de mémoire disponible (environ 6,43 Gio, selon
time
), donc cela ne fonctionnera pas avec l'interpréteur en ligne.Voici comment vous pouvez vérifier les résultats à partir de la ligne de commande:
la source