Dies ist Teil einer Herausforderung für Polizisten und Räuber . Gehen Sie hier für die Räuber.
Die Herausforderung der Bullen
Sie sollten ein Programm oder eine Funktion in einer Sprache Ihrer Wahl schreiben, die den String ausgibt Haystack
. Es muss jedoch möglich sein, eine Teilmenge von Zeichen aus Ihrem Programm zu entfernen (ohne den Rest neu anzuordnen), sodass die resultierende Zeichenfolge auch ein gültiges Programm in derselben Sprache ist, das Needle
stattdessen gedruckt wird. Beide Programme / Funktionen können optional (unabhängig voneinander) eine einzelne abschließende Zeile ausgeben, sonst nichts. Bei der Ausgabe wird zwischen Groß- und Kleinschreibung unterschieden. Die Ausgabe muss genau der angegebenen Schreibweise entsprechen.
Ihr Ziel ist es natürlich, die "Nadel" sehr gut zu verstecken. Beachten Sie jedoch, dass Ihr Beitrag mit jeder gültigen Lösung geknackt werden kann , nicht nur mit der von Ihnen beabsichtigten.
Bitte geben Sie in Ihrer Antwort an:
- Die Sprache (und ggf. die Version) Ihres Beitrags.
- Die Größe des Haystack-Programms in Byte.
- Das Haystack-Programm selbst.
- Die Ausgabemethode, wenn es nicht STDOUT ist.
- Wenn möglich, einen Link zu einem Online-Dolmetscher / Compiler für die von Ihnen gewählte Sprache.
Ihr Beitrag kann entweder ein Programm oder eine Funktion sein, aber kein Ausschnitt, und Sie dürfen keine REPL-Umgebung annehmen. Sie dürfen keine Eingabe vornehmen und können über STDOUT, Funktionsrückgabewert oder Funktionsparameter (out) ausgeben.
Beide Programme / Funktionen müssen auf einem vernünftigen Desktop-Computer innerhalb von 5 Sekunden abgeschlossen und deterministisch sein. Sie dürfen keine integrierten Funktionen zum Hashing, zur Verschlüsselung oder zur Generierung von Zufallszahlen verwenden (auch wenn Sie den Zufallszahlengenerator auf einen festen Wert setzen).
Im Interesse der Fairness muss es einen frei verfügbaren Dolmetscher oder Compiler für die von Ihnen gewählte Sprache geben.
Eine Antwort ist geknackt, wenn das Nadelprogramm gefunden wird. Wenn Ihre Antwort 7 Tage lang nicht geknackt wurde, können Sie das vorgesehene Nadelprogramm in Ihrer Antwort angeben, wodurch Ihre Übermittlung sicher ist. Solange Sie Ihre Lösung nicht preisgeben, kann sie auch dann von Räubern geknackt werden, wenn die sieben Tage bereits verstrichen sind. Das kürzeste sichere Heuhaufen-Programm (gemessen in Bytes) gewinnt.
Beispiele
Hier einige einfache Beispiele in verschiedenen Sprachen:
Ruby
Haystack: puts 1>0?"Haystack":"Needle"
Delete: XXXXXXXXXXXXXXX
Needle: puts "Needle"
Python 2
Haystack: print "kcatsyaHeldeeN"[-7::-1]
Delete: XXXXXXXX XX
Needle: print "eldeeN"[::-1]
Beachten Sie, dass die Teilmenge der entfernten Zeichen nicht zusammenhängend sein muss.
Uncracked Submissions
<script>site = 'meta.codegolf'; postID = 5686; isAnswer = false; QUESTION_ID = 144600;</script><script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)</code></pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>