Das ist der Faden der Bullen. Der Räuberfaden ist da .
Ihre Herausforderung besteht darin, ein Programm zu erstellen, das für immer ausgeführt wird, ohne 1 anzuhalten , es sei denn, es erhält eine bestimmte Eingabe oder Eingaben 2 . Wenn es diese Eingabe erhält, muss es in einer endlichen Zeitspanne enden . 3 . Dies ist Code-Golf , daher gewinnt die kürzeste Antwort, die nicht innerhalb einer Woche nach der Veröffentlichung von einem Räuber geknackt wurde. Markieren Sie nach Ablauf der Woche Ihre Antwort als sicher und zeigen Sie die Stopp-Eingabe (in a > ! spoiler quote
) an. Wenn ein Räuber Ihre Vorlage knackt, markieren Sie sie bitte als geknackt und zeigen Sie die Stopp-Eingabe (in a > ! spoiler quote
).
Einreichungen sollten auf TIO ausführbar und knackbar sein . Einsendungen, die nicht auf TIO ausgeführt oder geknackt werden können, sind zulässig, enthalten jedoch bitte Anweisungen zum Herunterladen / Ausführen.
Bitte machen Sie Ihre Eingabe deterministisch und über alle Läufe hinweg einheitlich. Weitere Informationen finden Sie in diesem Meta-Beitrag .
Bitte "implementieren Sie keine RSA" oder andere Dinge, die den Räubern etwas bedeuten. Verwenden Sie obskure Sprachen und Funktionen, ohne langweilige Verschlüsselung und Hashing. Ich kann dies nicht mit Regeln erzwingen, aber Sie können mit heftigen Abstimmungen rechnen, wenn Sie nur etwas tun sha(input) === "abcd1234"
.
1 Unter der Annahme, dass der Computer nicht heruntergefahren wird, nicht kaputt geht, nicht von der Sonne verschlungen wird, sich im Hitzetod des Universums überhitzt oder das TIO-Timeout von 60 Sekunden erreicht.
2 Das Programm muss an mindestens einer Eingabe anhalten . Solange es bei einem Eingang für immer eine Schleife durchläuft und bei einem anderen anhält, funktioniert es.
3 Dies muss <60 Sekunden sein, damit der Code auf TIO getestet werden kann.
Auf der Suche nach ungerissenen Einsendungen?
fetch("https://api.stackexchange.com/2.2/questions/135363/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!i.body_markdown.toLowerCase().includes("cracked")).map(x=>{const matched = /^ ?##? ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>
quelle
R
eingebe, treten sofort Fehler auf, ohne die Funktion überhaupt zu knacken. Ich würde argumentieren, dass dies nicht als tatsächliche Beendigung der Funktion gilt.Antworten:
Malbolge, 128 Bytes, geknackt von KBRON111
Habe Spaß!
(Ja, ich habe Malbolge nur dafür gelernt. Ja, es hat absurd lange gedauert, bis es endlich funktioniert hat. Und ja, es hat sich absolut gelohnt.)
Eingehüllt, so dass Sie es in seiner vollen "Herrlichkeit" sehen können:
Ich habe diesen Interpreter benutzt , um ihn zu testen. Ich bin nicht sicher, ob es wichtig ist, aber ich dachte, ich würde nur für den Fall angeben.
quelle
6
und die dritte ist eine der vier:!
,#
,/
und-
. Aber die Kombination scheint den Halt nicht zu regeln. Ich habe es hier rausgebracht, vielleicht findet jemand schlauer eine Lösung. Wenn jemand möchte, werde ich morgen posten, wie ich zu diesen Eingängen gekommen bin. EDIT: Nun, da ich darüber nachdenke, könnte mein Programm, das ich zum Zweck des Reverse Engineering geschrieben habe, einen Fehler aufweisen, und die erste Eingabe könnte etwas anderes sein als6
. Das dritte Zeichen steht noch.JavaScript (ES6), 17 Bytes, Gebrochen
Auf TIO, da ich nicht weiß, wie man Node.js readline auf TIO macht, kleben Sie einfach die Eingabe in den Funktionsaufruf. Dies ist für jeden offensichtlich, der es weiß, und nicht für jeden, der es nicht weiß.
Probieren Sie es online!
Antworten:
quelle
NaN == NaN
ist in vielen anderen Sprachen als JavaScript falsch. Ich würde es nicht als "Sprachverrücktheit" bezeichnen.NaN != NaN
ist ein Merkmal von Gleitkommazahlen+
odermax()
, aber die meisten Menschen interessieren sich nicht: P)JS (ES6), 67 Bytes ( geknackt )
Ich glaube, ich habe es nicht vermasselt, es könnte eine einfache Lösung geben, die ich nicht gesehen habe.
Ich freue mich über jedes Feedback, dies ist einer meiner ersten Beiträge
quelle
x
undy
endlich sind, aber ich werde nicht bearbeiten , da es bereits geknackt. Könnte 38 Bytes gewesen seinPython 3.4 (40 Byte) Gebrochen
quelle
x==x
in einer Variablen namens gespeichert haben solltento_be
, damit Sie einen Hamlet-Verweis erstellen können.Javascript (NICHT node.js)
Die gewünschte Vorlage verwendet keinen Wurf.
Hinweis für den gewünschten Riss:
Gewünschter Riss:
quelle
throw
(trotzdem gibt es einen Fehler)throw
, glaube ich diesmal wirklich, da Grant Davis 'für mich nicht funktioniert hat. NochTypeError
s.x=>{try{for(;x+"h";)}catch(e){for(;;)}}
damit alle Fehler zu einer Endlosschleife führen, sodass fehlende Prototypfunktionsfehler (oder alle Fehler) zu einer Endlosschleife führen.C (gcc) , 75 Bytes geknackt
Probieren Sie es online!
Ich habe noch nie in einem Cops-n-Räuber geschrieben. Hoffentlich ist das nicht zu offensichtlich.
Lösung:
quelle
JavaScript (im Browser), 79 Bytes geknackt
Sie sollten es in einem aktuellen Browser ausführen (wie dem neuesten Firefox ESR, dem neuesten Firefox, dem neuesten Chromium). Das Ausführen in alten Browsern (wie Netscape 2, IE 4) zählt nicht.
Hinweis: Beim Anhalten durch den Browser aufgrund einer Zeitüberschreitung wird hier kein Anhalten gezählt.
Seien Sie immer vorsichtig, stürzen Sie Ihren Browser nicht ab, wenn Sie diese Codes testen, und rauben Sie glücklich ^ _ ^
quelle
setTimeout
als ob die Verwendung als Parameter nicht funktioniert.var key=(()=>{setTimeout(args);return null})()
und danncrackme(key)
PHP (geknackt von Vicente Gallur Valero), 65 Bytes
Probieren Sie es online!
Härter als es aussehen mag. Auf TIO bearbeitet, um auf Kosten einiger Bytes möglich zu sein. Übernimmt die Eingabe über
$argv[1]
.quelle
Schale , 5 Bytes geknackt
Probieren Sie es online!
Eine kleine Erklärung, da diese Sprache noch ziemlich neu ist:
←ø
Ruft das erste Element einer leeren Liste ab: Dies gibt einen Wert zurück, der einen beliebigen Typ annehmen kann, sei es ein konkreter Typ oder eine Funktion, die dann auf die Eingabe angewendet wird.∞
Erstellt eine unendliche Liste, die aus Kopien des vorherigen Ergebnisses besteht (was in den meisten Fällen eine Liste mit unendlichen Nullen bedeutet).↑ε
Nimmt Elemente aus dieser Liste, solange sie "klein" sind, dh ihr absoluter Wert ist ≤ 1; Auf einer unendlichen Liste von Nullen hört dies nie auf.quelle
Braingolf , 4 Bytes ( Gebrochen )
Probieren Sie es online!
Super einfach, aber
mal sehen, wie lange es dauertAntworten:
quelle
Ruby , 31 Bytes ( geknackt von Eric Duminil )
Probieren Sie es online!
Beachten Sie, dass dies in einer Umgebung ausgeführt werden muss, in der es im Ergebnis keinen nachgestellten Zeilenumbruch gibt
gets
, oder dass es unmöglich ist, ihn anzuhalten (glaube ich), da alles, was in einem Zeilenumbruch endet, einen Fehler macht und die Rettung trifft.quelle
3.methods
gibt5
die Schleife zurück oder verlässt sie.5
zu glauben, dass die richtige Antwort die Funktion beinhalten würde, die sie erfüllt ...Bash, 25 Bytes ( geknackt )
Inspiriert von Dennis '. Probieren Sie es online aus.
quelle
Bash 4.2, 14 Bytes ( geknackt )
Versuchen wir es noch einmal.
Dies funktioniert nicht mit TIO, das Bash 4.3 verwendet. Die Eingabe erfolgt über Befehlszeilenargumente.
Unter Linux und mit installiertem gcc kann Bash 4.2.53 wie folgt heruntergeladen und erstellt werden.
quelle
Retina , 78 Bytes ( geknackt ) ( geknackt mit der beabsichtigten Lösung )
War ziemlich lustig zu schreiben, hoffe es macht Spaß zu knacken
Probieren Sie es online!
Gebrochen mit einer unbeabsichtigten Lösung und der vorgesehenen Lösung innerhalb einer Minute voneinander. Einer zuerst gepostet, einer zuerst kommentiert.
Beabsichtigte Lösung:
quelle
Node.js, 23 Bytes ( geknackt )
Grant Davis Lösung
Meine Lösung
quelle
Java 8, 99 Bytes, Gebrochen
Dies ist ein Lambda des Typs
Consumer<String>
.Ungolfed:
Probieren Sie es online!(Beachten Sie, dass das Testprogramm bei leerer Eingabe abstürzt, das Lambda selbst jedoch nicht!) (Verwenden Sie auch "Argumente", nicht "Eingabe" bei TIO, da das Testprogramm Argumente verwendet, nicht STDIN)
Beabsichtigte Antwort:
quelle
Bash 4.2, 10 Bytes ( geknackt )
Dies funktioniert nicht mit TIO, das Bash 4.3 verwendet. Die Eingabe erfolgt über Befehlszeilenargumente.
Unter Linux und mit installiertem gcc kann Bash 4.2.53 wie folgt heruntergeladen und erstellt werden.
quelle
Java: 1760 ( Gebrochen )
Ich denke, es ist zu gemein, um Golf zu spielen, also habe ich nur die Variablennamen verschleiert und es "chaotisch" gemacht. Tatsächlich ist es so gemein, dass ich mit der Zeit Hinweise posten werde, nur damit ich sehe, dass es Risse gibt.
Tipp 1: Dies hat theoretisch unendlich viele gültige Eingaben, aber es gibt eine, die am 'korrektesten' ist.
Probieren Sie es online!
quelle
Braingolf , 18 Bytes Gebrochen
Probieren Sie es online!
Liiiitle ein bisschen härter als der letzte, ich werde beginnen, eine echte danach zu schreiben
quelle
i
funktioniert nicht.£
). Und warum geht das nicht-1
? Das ist knifflig.JavaScript (ES7), 41 Bytes ( zerhackte & Gebrochen )
Bearbeiten: Korrigiert, damit es nicht abstürzt, wenn überhaupt keine Eingabe erfolgt (danke @totallyhuman für das Bemerken)
Es gibt wahrscheinlich mehrere Lösungen, aber die erwartete ist relativ einfach.
Beabsichtigte Lösung:
quelle
Bash + Utils (Gebrochen von Dennis), 74 Bytes
Ich hoffe, Sie genießen Teer, weil es das einzige Dienstprogramm ist, das Sie verwenden können.
Probieren Sie es online!
Beabsichtigter Riss
quelle
Mathematica,
3626 Bytes ( geknackt )Eine sehr kurze Schleife
#0[#;∞]
, die sich immer wieder von selbst abspielt, bis Ihr Kernel abstürzt$IterationLimit
dient nur dazu, sicherzustellen, dass Sie bei den meisten Eingaben für immer stecken bleiben).Probieren Sie es auf Wolfram Sandbox! - Wenn Sie sich in einer Endlosschleife befinden, können Sie warten, bis die Zeit abgelaufen ist, oder Sie können das Quadrat "Bewertung abbrechen" links neben dem Titel des Notizbuchs drücken
(unnamed)
.HINWEIS : Diese Funktion ändert Ihre
$IterationLimit
Einstellungen.quelle
JavaScript (Node.js), 18 Byte ( geknackt )
Probieren Sie es online! Antworten:
quelle
Symbol()
funktionieren würde.C #, 118 Bytes ( geknackt )
Ich erwarte nicht, dass dies zu lange dauert, aber es ist umständlicher, als es scheint.
quelle
C, 140 Bytes ( geknackt )
Hoffentlich gibt es nicht zu viele Eingaben, die nicht einmal in der Nähe der beabsichtigten Eingaben liegen, aber lassen Sie uns sehen.
Probieren Sie es online!
quelle
JavaScript (ES7), 73 Bytes ( geknackt !)
Nicht gewollte Lösungen: rohe Gewalt. Gewünschter Riss beinhaltet Mathe.
Beachten Sie, dass es aufgrund von Modulo viele Lösungen gibt (4194304).
quelle
Brainfuck , 170 Bytes geknackt!
Probieren Sie es online!
quelle
nul
Brainfuck durchführen. Übrigens können Sie zwei zuerst>
gespeicherte 2 Bytes entfernen .JavaScript ES6 (Node.js> = 6.0) , 326 Byte (sicher)
Viel einfacher als meine andere Herausforderung war, versuche ich nicht länger, den Lösungsansatz zu verschleiern, was mir viele Bytes erspart hat. Diesmal um,
process.kill()
wird nicht funktionieren.Probieren Sie es online!
quelle
Schnelle 3, 14 Bytes ( geknackt )
Fügen Sie Ihren Code vor oder nach dieser Anweisung ein, um das Problem zu beheben.
fatalError()
usw., bevor es nicht zählt.quelle
ambiguous semantics
mich an.cQuents , 2 Bytes ( geknackt 1 ) ( geknackt 2 )
Beachten Sie, dass dies schnell die 128-KiB-Ausgabegrenze für TIO überschreitet, was zu einem Stopp führt. Wenn es lokal ausgeführt wird, wird eine Endlosschleife ausgeführt, mit Ausnahme der Eingabe, die es unterbricht. Die Eingabe sollte ziemlich einfach zu finden sein. Bis Sie dies tun,
:A
werden Sie weiterhin mit der dreieckigen Zunge bedacht sein.Beachten Sie auch, dass dies nur sein sollte ,
A
aber ich habe letzte Nacht implizite Modi gebrochen. Auf älteren Interpreter-VersionenA
würde es gut funktionieren.Risse:
Probieren Sie es online!
quelle