AVIS - Ce défi est maintenant fermé. Toute nouvelle réponse sera ignorée et la réponse acceptée ne changera pas
Défi
Ecrivez un programme valide qui, lorsque seulement deux caractères du programme sont modifiés, supprimés ou ajoutés, modifie complètement la sortie.
La sortie modifiée doit avoir une distance de Levenshtein de 15 ou plus par rapport à votre sortie d'origine.
La sortie doit être non vide et finie. Votre programme doit donc se terminer dans la minute qui suit.
Votre sortie doit être déterministe, en produisant la même chose chaque fois que vous exécutez le programme. Il ne doit pas non plus dépendre de la plate-forme.
Toutes les fonctions de hachage sont interdites , comme cela est construit dans les PRNG. De même, l'ensemencement d'un RNG n'est pas autorisé.
Après une période de trois jours, une soumission non fissurée sera sécurisée. Afin de réclamer cette sécurité, vous devez modifier votre réponse pour indiquer la réponse correcte. (Précision: jusqu'à ce que vous révéliez la réponse, vous n'êtes pas en sécurité et vous pouvez toujours être fissuré.)
Mise en page
Votre réponse devrait être dans le format suivant:
# <Language name>, <Program length>
## Code
<code goes here>
## Original Output
<output goes here>
## Changed output
<changed output goes here>
Voleurs
Le défi des voleurs est de savoir quels sont les deux personnages que vous avez changés. Si un voleur a craqué votre solution, ils laisseront un commentaire sur votre réponse.
Vous pouvez trouver le fil des voleurs ici .
Gagnant
La personne avec la solution la plus courte non fissurée gagne.
Classement
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>site = 'meta.codegolf';postID = 5686;isAnswer = false;QUESTION_ID = 54464;var safe_list=[];var uncracked_list=[];var n=0;var bycreation=function(x,y){return (x[0][0]<y[0][0])-(x[0][0]>y[0][0]);};var bylength=function(x,y){return (x[0][1]>y[0][1])-(x[0][1]<y[0][1]);};function u(l,o){ jQuery(l[1]).empty(); l[0].sort(o); for(var i=0;i<l[0].length;i++) l[0][i][1].appendTo(l[1]); if(l[0].length==0) jQuery('<tr><td colspan="3" class="message">none yet.</td></tr>').appendTo(l[1]);}function g(p) { jQuery.getJSON('//api.stackexchange.com/2.2/questions/' + QUESTION_ID + '/answers?page=' + p + '&pagesize=100&order=desc&sort=creation&site=codegolf&filter=!.Fjs-H6J36w0DtV5A_ZMzR7bRqt1e', function(s) { s.items.map(function(a) { var he = jQuery('<div/>').html(a.body).children().first(); he.find('strike').text(''); var h = he.text(); if (!/cracked/i.test(h) && (typeof a.comments == 'undefined' || a.comments.filter(function(b) { var c = jQuery('<div/>').html(b.body); return /^cracked/i.test(c.text()) || c.find('a').filter(function() { return /cracked/i.test(jQuery(this).text()) }).length > 0 }).length == 0)) { var m = /^\s*((?:[^,;(\s]|\s+[^-,;(\s])+)\s*(?:[,;(]|\s-).*?([0-9]+)/.exec(h); var e = [[n++, m ? parseInt(m[2]) : null], jQuery('<tr/>').append( jQuery('<td/>').append( jQuery('<a/>').text(m ? m[1] : h).attr('href', a.link)), jQuery('<td class="score"/>').text(m ? m[2] : '?'), jQuery('<td/>').append( jQuery('<a/>').text(a.owner.display_name).attr('href', a.owner.link)) )]; if(/safe/i.test(h)) safe_list.push(e); else uncracked_list.push(e); } }); if (s.length == 100) g(p + 1); else { var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']]; for(var p=0;p<2;p++) u(s[p],bylength); jQuery('#uncracked_by_length').bind('click',function(){u(s[0],bylength);return false}); jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false}); } });}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><style>table th,table td { padding: 5px;}th { text-align: left;}.score { text-align: right;}table a { display: block;}.main { float: left; margin-right: 30px;}.main h3,.main div { margin: 5px;}.message { font-style: italic;}</style><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Length</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_length">length</a> <a href="#" id="uncracked_by_creation">creation</a></div></div><div class="main"><h3>Safe submissions</h3><table> <tr> <th>Language</th> <th class="score">Length</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
la source
Réponses:
CJam, 13 octets (sûr)
Essayez-le en ligne.
Sortie originale
Sortie modifiée
Solution
Essayez-le en ligne.
Comment ça fonctionne
Ceci profite de la façon dont CJam imprime implicitement la pile entière après l'exécution du programme.
Le simple fait de vider les représentations en base 2 de quelques entiers de la pile entraîne leur impression sans séparateur. Il devrait donc être difficile de savoir où commence l’une d’entre elles et où se termine l’autre.
Le code original fait ce qui suit:
Comme @AndreaBiondo le note dans les commentaires, les représentations binaires de 0! à 8! peut être trouvé au début de la sortie (espaces ajoutés pour plus de clarté):
La modification envisagée consistait à remplacer
mQ
parci
, qui prend l'entier modulo 65536, en utilisant une arithmétique de 16 bits (transtypage en un caractère de 16 bits non signé, puis en un entier).J'espérais que l'idée d'utiliser
c
pour remplacer un opérateur mathématique serait assez obscure.la source
_)mQ
devait être changé à unef(x!)
telle quef(x!) > x!
pourx <= 8
etf(x!) < x!
pourx >= 9
, parcex!
était évidemment d' être modulo'ed par un nombre qui a quitté les factorielles de 0 à 8 intact dans la sortie. Je n'ai pas remarqué que9!
le premier facteur était plus gros que2^16
. Très beau défi quand même.Fissuré
Shakespeare, 1721 octets
J'ai essayé une réponse de Shakespeare. Ce n’est pas court et j’ai eu du mal à changer la sortie avec seulement 2 caractères, mais je pense que j’ai assez bien réussi. Bonne chance à tous. En remarque, j’ai utilisé le "compilateur" disponible à cette adresse et il se peut que cela ne fonctionne pas avec un autre. (cela ne fonctionne pas avec l'interpréteur en ligne) La sortie ne contient aucun caractère non imprimable.
Code
Sortie d'origine
Sortie modifiée
la source
J, 76 octets (sûr)
Code
Sortie d'origine
Sortie modifiée
EDIT: Solution
{:
ajoutée (affichée entre###
)Utilise la
{::
carte de la monade . La majeure partie du reste du code est une foutaise inutile.la source
Fissuré
Ruby, 14 ans
Code
Sortie d'origine
Sortie modifiée
la source
'99'*2
.wc
, tu m'as trahi!Fissuré
Bash, 15 octets
Sortie originale
Sortie modifiée
la source
Fissuré
Prolog, 10 octets
Code
Sortie d'origine
Sortie modifiée
la source
X is 1//4-2.
:, ce qui est beaucoup plus facile à voir que ma solution d'origine que @ sp3000 a craqué ...Fissuré
Python 2, 43 octets
Code
Sortie d'origine
Sortie modifiée
La distance de Levenshtein est de 15 exactement. L'original et le fichier modifié durent moins d'une minute sur mon ordinateur.
la source
print
et de la multiplicationrange
par un entier. Cependant, il semble que je sois en trainMemoryError
dexrange
place derange
et je penseitertools
avoir un générateur-générateur qui répète unx
nombre de séquence de fois.Fissuré
BrainFuck, 504 octets
Personne ne devrait jamais avoir besoin d'analyser un code brainfuck. Il s'agit d'une version modifiée d'un code antérieur, mais toute modification apportée à un code Brainfuck fait une grande différence dans la sortie. J'utilise l'interpréteur à l' adresse http://esoteric.sange.fi/brainfuck/impl/interp/i.html pour tester mon code. Bonne chance !
Code
Sortie d'origine
Sortie modifiée
Remarque: La sortie modifiée contient plusieurs caractères STX (ASCII 2) et EOT (ASCII 4).
Voici la version avec des codes ASCII entre parenthèses au lieu de caractères non imprimables:
la source
fissuré
Wolfram Language (Mathematica ou WolframAlpha), 3 octets
Code
Sortie d'origine
Sortie modifiée
Pour ceux qui l’essaient sur WolframAlpha, le résultat est le suivant:
J'ai supprimé ma réponse précédente car cela ne fonctionnait que sur Mathematica et non sur WolframAlpha . Cela a mis les voleurs derrière un paywall (au lieu des bars mérités), ce qui n’était pas juste.
la source
Fissuré
MATLAB / OCTAVE, 7 octets
Code:
Sortie originale:
Sortie modifiée:
Cela donne une distance de Levenshtein d’exactement 15.
la source
Fissuré
CJam, 8 personnages
Code
Sortie originale
Sortie modifiée
La sortie après modification est ici . Les deux prennent moins d'une minute sur mon ordinateur portable 2GHz.
Explication
Les gens semblent étonnés de voir comment cela fonctionne. Le code fonctionne comme ceci:
Ceci calcule 126 ^ 102. La solution était:
Ceci calcule ((125 ^ 9) ^ 126) ^ 102, ce qui correspond à des centaines de milliers de chiffres.
la source
Fissuré
Pyth, 8 octets
Code:
Sortie initiale:
Sortie modifiée:
la source
CG mod (2^21 * 28)
. Je ne connais pas Pyth, donc je ne vois pas comment changer(3 ^ (2 * 21))
cela ...CG
égalsum(256**n * (122-n) for n in range(26))
.CG mod (2^21 * 28 * 2*n)
, où1 <= n <= 4
, ainsi que pourn=6
etn=12
. En outre,CG
l'alphabet minuscule est simplement interprété comme un nombre de base 256. Je me demande s'il y a un autre modulo avec la base 3?%CG^2 26
ou%CG^4y13
, mais les deux ont une distance de 3 ...Fissuré
Python 2, 58 octets
Code
Sortie d'origine
Sortie modifiée
Cette règle de distance rendait les choses difficiles. J'espère que ça va bien.
la source
[m<<min(m,n)for m in R for n in R]
dans l'interprète, vous obtenez des motifs très fantasmagoriques de bruit blanc.Fissuré
Python 2, 50 octets
Code d'origine:
Sortie d'origine:
Sortie modifiée:
Pas trop court, et peut-être pas trop dur, je ne sais pas vraiment. Je vais essayer de trouver quelque chose de mieux bientôt.
la source
x
pary
,y
dex
ou de modification du chiffre dans lerange
résultat dans 19 tildes. J'ai également essayé d'insérer un-
avantx
ouy
, et de passer%
à l'un des+ - / *
, en vain. Je suis à peu près certain qu’un ou deux inserts sont nécessaires.y
dans le champ d'application ci-joint était une délicate attention.Fissuré
PHP, 164 octets
Code
Sortie d'origine
Sortie modifiée
la source
GolfScript, 15 octets (sûr)
Code
10,{1+3?}%{*}*]
Code modifié
107,{1+3?}%{^}*]
Sortie d'origine
47784725839872000000
Sortie modifiée
557154
Explications:
Code modifié
la source
Fissuré
APL , 7 octets
Code
Sortie originale
Sortie modifiée
la source
J
la preuve de sortie indique qu'il s'agit d'un nombre complexe?aJb
fait référence au nombre complexea + bi
.Fissuré
C, 53 octets
Code
Sortie d'origine
Sortie modifiée
Probablement trop facile, mais qui sait. (Remarque: cela dépend techniquement du système, mais le type de système sur lequel il échoue échouerait également pour toutes les autres soumissions présentées ici, alors j’ai pensé que c’était un point discutable).
Fissuré
Modifier
J'ai fait une erreur. Nouveau code qui est plus sécurisé à l'attaque évidente:
mêmes sorties. Nouvelle taille de 65 octets. Espérons que ce sera plus difficile ... mais probablement encore trop facile.
la source
Fissuré par issacg
MATLAB, 20 octets
Code
Sortie d'origine
Sortie modifiée
la source
sinh
,asin
,tan
,pi^i
, etc ...Fissuré
Octave, 20 octets
Sortie:
Sortie modifiée:
la source
CJam, 28 octets (sûr)
Essayez-le en ligne .
Sortie originale
Sortie modifiée
Solution
Essayez-le en ligne.
Comment ça fonctionne
Je suis allé un peu à la mer avec celui-ci ...
Le code original fait ce qui suit:
Le changement prévu remplace
(i
parWci
.Cela laisse la chaîne répétée intacte et pousse 65535 (en convertissant en un caractère de 16 bits non signé, puis de nouveau en entier), de sorte que les premiers éléments de la séquence de Fibonacci en retard deviennent
et la boucle est répétée 126 fois.
la source
Javascript, 47 (sûr)
Code
Sortie d'origine
Sortie modifiée
La distance est exactement 15.
Testé dans Chrome et IE.
Solution
Ceci utilise l'opérateur d'assignation de décalage de bits
i>>=1
pour rendre l'intervalle de boucle non linéaire. De plus, cela a la propriété amusante que quelqu'un qui essaie de forcer brutalement une solution rencontrera plusieurs variations infinies.la source
Fissuré
Fantom , 26 ans
Code
Sortie d'origine
Sortie modifiée
La sécurité par l'obscurité, si personne ne connaît la langue, personne ne peut la déchiffrer. Levenshtein Distance de 15. Exécutez-le dans fansh.
la source
Fissuré
CJam, 6 personnages
Sortie originale
Sortie modifiée
Cela pourrait être trop facile. : P
la source
Fissuré
Java, 149 caractères
Sortie d'origine
Sortie modifiée
Allusion:
la source
Brainfuck, 100 octets
Code
Sortie originale
Sortie modifiée
Remarque: Peut-être facile à craquer. Mais alors, rien n'est facile dans Brainfuck.
la source
fissuré
Perl moderne 5, 70
Code
Sortie d'origine
Une nouvelle ligne.
Sortie modifiée
La sortie commence par un espace et se termine par une nouvelle ligne.
la source
each
s'applique à un tableau qu'à partir d'une version.Fissuré
Matlab, 12 octets
Code
Sortie originale
Sortie modifiée
la source
perl, 12 octets
fissuré
Code
Sortie originale
Sortie désirée
la source
print sin xx
,print sin xx97
ouprint sin 97xx
oùxx
est deux nombres.9.?7
,9.7?
, etc, mais réalisé qu'il devait être un opérateur. J'ai essayé tout ce à quoi je pouvais penser dans des extraits comme si j'avaisperl -e 'print map{sin((+"9${_}")x7).$/}1..9'
finalement la bonne combinaison!Fissuré
SWI-Prolog, 54 octets
Code
Sortie d'origine
Sortie modifiée
la source
E
etF
dans lesprint
déclarations obtenez-vous ce que vous voulez?