HINWEIS - Diese Herausforderung ist jetzt geschlossen. Alle neuen Antworten werden ignoriert und die akzeptierte Antwort wird nicht geändert
Herausforderung
Schreiben Sie ein gültiges Programm, das die Ausgabe vollständig ändert, wenn nur zwei Zeichen im Programm geändert, entfernt oder hinzugefügt werden.
Die geänderte Ausgabe muss einen Levenshtein-Abstand von 15 oder mehr von Ihrer ursprünglichen Ausgabe haben.
Die Ausgabe darf nicht leer und endlich sein. Ihr Programm muss daher innerhalb von 1 Minute beendet sein.
Ihre Ausgabe muss deterministisch sein und bei jeder Ausführung des Programms dasselbe ausgeben. Es darf auch nicht plattformabhängig sein.
Alle Hash-Funktionen sind nicht zulässig , wie sie in PRNGs enthalten sind. Ebenso ist das Aussäen eines RNG nicht erlaubt.
Nach einem Zeitraum von drei Tagen wird eine ungerissene Vorlage sicher. Um diese Sicherheit zu beanspruchen, sollten Sie Ihre Antwort bearbeiten, um die richtige Antwort anzuzeigen. (Klarstellung: Bis Sie die Antwort enthüllen, sind Sie nicht sicher und können immer noch geknackt werden.)
Formatierung
Ihre Antwort sollte in folgendem Format vorliegen:
# <Language name>, <Program length>
## Code
<code goes here>
## Original Output
<output goes here>
## Changed output
<changed output goes here>
Räuber
Die Räuber müssen herausfinden, welche beiden Charaktere Sie geändert haben. Wenn ein Räuber Ihre Lösung geknackt hat, hinterlässt er einen Kommentar zu Ihrer Antwort.
Den Räuberfaden finden Sie hier .
Gewinnen
Die Person mit der kürzesten ungerissenen Lösung gewinnt.
Bestenliste
<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>
quelle
Antworten:
CJam, 13 Bytes (sicher)
Probieren Sie es online aus.
Originalausgabe
Geänderte Ausgabe
Lösung
Probieren Sie es online aus.
Wie es funktioniert
Dadurch wird ausgenutzt, wie CJam nach Ausführung des Programms implizit den gesamten Stapel druckt.
Durch einfaches Ablegen der Basis-2-Darstellungen einiger ganzer Zahlen auf dem Stapel werden sie ohne Trennzeichen gedruckt. Daher sollte es schwierig sein, herauszufinden, wo eine von ihnen beginnt und eine andere endet.
Der ursprüngliche Code führt Folgendes aus:
Wie @AndreaBiondo in den Kommentaren festhält, sind die binären Darstellungen von 0! bis 8! finden Sie am Anfang der Ausgabe (Leerzeichen zur Verdeutlichung hinzugefügt):
Die beabsichtigte Änderung war zu ersetzen ,
mQ
mitci
, der die ganze Zahl modulo 65536 nimmt, 16-Bit - Zeichen - Arithmetik (Gießen auf ein vorzeichenlose 16-Bit - Zeichen, dann zurück zu integer).Ich hoffte, dass die Idee
c
, einen mathematischen Operator zu ersetzen, undurchsichtig genug wäre.quelle
_)mQ
dies in einf(x!)
solchesf(x!) > x!
fürx <= 8
undf(x!) < x!
für geändert werden musstex >= 9
, dax!
es offensichtlich durch eine Zahl moduliert wurde, bei der die Fakultäten von 0 bis 8 in der Ausgabe intakt blieben. Ich habe nicht bemerkt,9!
war die erste Fakultät größer als2^16
. Trotzdem eine sehr schöne Herausforderung.Geknackt
Shakespeare, 1721 Bytes
Ich versuchte es mit einer Shakespeare-Antwort. Es ist nicht kurz und ich hatte Schwierigkeiten, die Ausgabe mit nur 2 Zeichen zu ändern, aber ich denke, es ist mir ganz gut gelungen. Viel Glück euch allen. Als Randnotiz habe ich den "Compiler" verwendet, der unter dieser Adresse verfügbar ist, und er funktioniert möglicherweise nicht mit einem anderen. (Funktioniert nicht mit dem Online-Interpreter.) Die Ausgabe enthält keine nicht druckbaren Zeichen.
Code
Originalausgabe
Ausgabe geändert
quelle
J, 76 Bytes (sicher)
Code
Originalausgabe
Ausgabe geändert
EDIT: Lösung
{:
hinzugefügt (angezeigt zwischen###
)Nutzt die Monade
{::
Karte . Der Rest des Codes ist größtenteils unnützer Müll.quelle
Geknackt
Rubin, 14
Code
Originalausgabe
Ausgabe geändert
quelle
'99'*2
.wc
, Du hast mich betrogen!Geknackt
Bash, 15 Bytes
Originalausgabe
Geänderte Ausgabe
quelle
Geknackt
Prolog, 10 Bytes
Code
Originalausgabe
Ausgabe geändert
quelle
X is 1//4-2.
, die viel leichter zu sehen , als meine ursprüngliche Lösung, die @ SP3000 geknackt ...Geknackt
Python 2, 43 Bytes
Code
Originalausgabe
Ausgabe geändert
Die Levenshtein Entfernung beträgt genau 15. Sowohl das Original als auch das Geänderte laufen auf meinem Computer unter 1 Minute.
quelle
print
und der Multiplikationrange
mit einer Ganzzahl um eine Python 2-spezifische Übermittlung handelt. Allerdings scheine ichMemoryError
s von der großen Liste zu bekommen ...xrange
stattdessen verwenden,range
und ich glaube, dassitertools
es einen Generator-Builder gibt, der eine Sequenz sox
oft wiederholt .Geknackt
BrainFuck, 504 Bytes
Niemand sollte jemals einen Brainfuck-Code analysieren müssen. Dies ist eine modifizierte Version eines früheren Codes, aber jede Änderung an einem Brainfuck-Code hat einen großen Einfluss auf die Ausgabe. Ich benutze den Interpreter unter http://esoteric.sange.fi/brainfuck/impl/interp/i.html , um meinen Code zu testen. Viel Glück !
Code
Originalausgabe
Ausgabe geändert
Hinweis: Die geänderte Ausgabe enthält mehrere STX- (ASCII 2) und EOT- (ASCII 4) Zeichen
Hier ist die Version mit ASCII-Codes in Klammern anstelle von nicht druckbaren Zeichen:
quelle
geknackt
Wolfram Language (Mathematica oder WolframAlpha), 3 Bytes
Code
Originalausgabe
Ausgabe geändert
Für diejenigen, die es auf WolframAlpha ausprobieren, wird das Ergebnis als angezeigt
Ich habe meine vorherige Antwort gelöscht, da sie nur in Mathematica und nicht in WolframAlpha funktioniert hat . Das brachte Räuber hinter eine Paywall (anstelle der verdienten Bars), was nicht fair war.
quelle
Geknackt
MATLAB / OCTAVE, 7 Bytes
Code:
Originalausgabe:
Geänderte Ausgabe:
Dies ergibt einen Levenshtein-Abstand von genau 15.
quelle
Geknackt
Jam, 8 Zeichen
Code
Originalausgabe
Ausgabe geändert
Die Ausgabe nach Änderung erfolgt hier . Beides dauert auf meinem 2-GHz-Laptop weniger als eine Minute.
Erläuterung
Die Leute scheinen erstaunt zu sein, wie das funktioniert. Der Code funktioniert so:
Dies berechnet 126 ^ 102. Die Lösung war:
Dies berechnet ((125 ^ 9) ^ 126) ^ 102, was Hunderttausenden von Ziffern entspricht.
quelle
Geknackt
Pyth, 8 Bytes
Code:
Ausgangsleistung:
Geänderte Ausgabe:
quelle
CG mod (2^21 * 28)
. Ich kenne Pyth nicht, also kann ich nicht sehen, wie ich das ändern kann(3 ^ (2 * 21))
...CG
gleichsum(256**n * (122-n) for n in range(26))
.CG mod (2^21 * 28 * 2*n)
, wo1 <= n <= 4
, sowie fürn=6
undn=12
. AußerdemCG
wird nur das Kleinbuchstaben als Basis-256-Zahl interpretiert. Ich frage mich, ob es ein anderes Modulo mit Basis 3 gibt.%CG^2 26
oder%CG^4y13
, aber beide haben einen Abstand von 3 ...Geknackt
Python 2, 58 Bytes
Code
Originalausgabe
Ausgabe geändert
Diese 15-Distanz-Regel machte die Sache sicher schwierig. Ich hoffe das geht gut.
quelle
[m<<min(m,n)for m in R for n in R]
im Interpreter ausdrucken , erhalten Sie einige wirklich gruselige, rauschähnliche Muster.Geknackt
Python 2, 50 Bytes
Ursprünglicher Code:
Originalausgabe:
Geänderte Ausgabe:
Nicht allzu kurz und vielleicht auch nicht zu hart, ich weiß es nicht wirklich. Ich werde versuchen, bald etwas Besseres zu finden.
quelle
x
durchy
,y
durchx
oder Ändern der Ziffer imrange
Ergebnis in 19 Tilden. Ich experimentierte auch mit dem Einfügen von-
entweder vorherx
odery
mit dem Ändern%
zu einem+ - / *
ohne Erfolg. Ich bin mir ziemlich sicher, dass 1 oder 2 Beilagen erforderlich sind.y
war auch eine nette Geste, sich darauf zu verlassen, dass Python in das umschließende Oszilloskop eindringt.Geknackt
PHP, 164 Bytes
Code
Originalausgabe
Ausgabe geändert
quelle
GolfScript, 15 Bytes (sicher)
Code
10,{1+3?}%{*}*]
Code geändert
107,{1+3?}%{^}*]
Originalausgabe
47784725839872000000
Ausgabe geändert
557154
Erklärungen:
Code geändert
quelle
Geknackt
APL , 7 Bytes
Code
Originalausgabe
Ausgabe geändert
quelle
J
ein Beweis dafür, dass es sich um eine komplexe Zahl handelt?aJb
bezieht sich auf die komplexe Zahla + bi
.Geknackt
C 53 Bytes
Code
Originalausgabe
Ausgabe geändert
Wahrscheinlich zu einfach, aber wer weiß. (Hinweis: Es ist technisch systemabhängig, aber die Art des Systems, auf dem es fehlschlägt, würde auch alle anderen Einreichungen hier fehlschlagen. Ich dachte, es ist ein strittiger Punkt.)
Geknackt
Bearbeiten
Ich machte einen Fehler. Neuer Code, der vor offensichtlichen Angriffen sicherer ist:
gleiche Ausgänge. Neue Größe von 65 Bytes. Hoffentlich schwieriger ... obwohl es wahrscheinlich immer noch zu einfach ist.
quelle
Durch issacg geknackt
MATLAB, 20 Bytes
Code
Originalausgabe
Ausgabe geändert
quelle
sinh
,asin
,tan
,pi^i
, etc ...Geknackt
Oktave, 20 Bytes
Ausgabe:
Geänderte Ausgabe:
quelle
CJam, 28 Bytes (sicher)
Probieren Sie es online aus .
Originalausgabe
Geänderte Ausgabe
Lösung
Probieren Sie es online aus.
Wie es funktioniert
Ich bin ein wenig über Bord gegangen mit diesem ...
Der ursprüngliche Code führt Folgendes aus:
Die beabsichtigte Änderung ersetzt
(i
mitWci
.Dadurch bleibt die wiederholte Zeichenfolge unangetastet und wird 65535 verschoben (durch Umwandeln in ein 16-Bit-Zeichen ohne Vorzeichen und dann zurück in eine Ganzzahl), sodass die ersten Elemente der verzögerten Fibonacci-Sequenz erhalten werden
und die Schleife wird 126 mal wiederholt .
quelle
Javascript, 47 (sicher)
Code
Originalausgabe
Ausgabe geändert
Die Entfernung beträgt genau 15.
Getestet in Chrome und IE.
Lösung
Dies verwendet den Bitzuweisungsoperator
i>>=1
, um das Schleifenintervall nichtlinear zu machen. Auch dies hat die amüsante Eigenschaft, dass jemand, der versucht, eine Lösung zu erzwingen, auf mehrere Varianten stößt, die unendlich laufen.quelle
Geknackt
Fantom , 26
Code
Originalausgabe
Ausgabe geändert
Sicherheit durch Dunkelheit: Wenn niemand die Sprache kennt, kann niemand sie knacken. Levenshtein Abstand von 15. Führen Sie es in fansh.
quelle
Geknackt
CJam, 6 Zeichen
Originalausgabe
Ausgabe geändert
Das könnte zu einfach sein. : P
quelle
Geknackt
Java, 149 Zeichen
Originalausgabe
Geänderte Ausgabe
Hinweis:
quelle
Brainfuck, 100 Bytes
Code
Originalausgabe
Ausgabe geändert
Hinweis: Möglicherweise leicht zu knacken. Aber dann ist in Brainfuck nichts einfach.
quelle
geknackt
modernes Perl 5, 70
Code
Originalausgabe
Eine einzelne Newline.
Ausgabe geändert
Die Ausgabe beginnt mit einem Leerzeichen und endet mit einer neuen Zeile.
quelle
each
erst seit einer bestimmten Version für ein Array gilt.Geknackt
Matlab, 12 Bytes
Code
Originalausgabe
Ausgabe geändert
quelle
Perl, 12 Bytes
geknackt
Code
Originalausgabe
Gewünschte Ausgabe
quelle
print sin xx
istprint sin xx97
, oderprint sin 97xx
woxx
zwei Zahlen stehen.9.?7
,9.7?
usw., aber klar , dass es ein Operator sein mußte. Ich habe alles versucht, was mir in Ausschnitten einfiel, als hätte ichperl -e 'print map{sin((+"9${_}")x7).$/}1..9'
irgendwann die richtige Kombination!Geknackt
SWI-Prolog, 54 Bytes
Code
Originalausgabe
Ausgabe geändert
quelle
E
undF
in denprint
Anweisungen entfernen , erhalten Sie, was Sie wollen?