Das ist der Faden der Bullen. Der Räuberfaden ist da .
Ihre Herausforderung besteht darin, ein Programm oder eine Funktion zu schreiben, die mit einer bestimmten Eingabe den genauen String Hello, World!
und eine neue Zeile ausgibt. Groß- und Kleinschreibung, Abstand und Zeichensetzung müssen genau sein.
Die Eingabe kann über Standardeingabe, eine Datei oder Befehlszeilen- / Funktionsargumente erfolgen. Die Ausgabe kann über den Rückgabewert, das Schreiben in eine Datei oder die Standardausgabe erfolgen.
Ihr Programm muss Hello, World!
für mindestens eine Eingabe drucken . Wenn Ihr Programm die falsche Eingabe erhält (dh die Eingabe, bei der es nicht gedruckt wird Hello, World!
), kann es tun, was immer Sie möchten - abstürzen, zufälligen Unsinn drucken, Chuck Norris aufrufen usw.
Sie dürfen keinen Hashing-Algorithmus oder ähnliche Methoden verwenden, um die erforderliche Eingabe zu verdecken.
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.
Nach einer Woche wird diese Herausforderung für zukünftige Cop-Einreichungen geschlossen. Der Gewinner ist der kürzeste Code, der nach einer Woche nicht geknackt wurde ("es" ist der Code, nicht diese Herausforderung). Der Gewinner wird nach zwei Wochen angenommen.
Nachdem eine Woche seit dem Posten vergangen ist, markieren Sie bitte Ihre Antwort als sicher und zeigen Sie die Eingabe (in a > ! spoiler quote
). Wenn ein Räuber (vor dem Ende der Woche) Ihre Vorlage knackt, markieren Sie sie bitte als geknackt und zeigen Sie die stoppende Eingabe (in a > ! spoiler quote
).
Auf der Suche nach ungerissenen Einsendungen?
fetch("https://api.stackexchange.com/2.2/questions/137742/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>
sha3
in diese Kategorie, aber wo sonst ziehst du die Grenze? Ich meine, dasmod 1e3
ist auch eine Hash-Funktion, und ich würde sogar so weit gehen und argumentieren, dass viele der Einsendungen Hash-Funktionen sein werden, da diese Herausforderung im Grunde nach einer solchen verlangt.Antworten:
Python 3,
191186 Bytes (SICHER!)Wie meine vorherige Antwort, jedoch ohne die noob eval-Anweisung, sodass jemand das von mir geschaffene Problem tatsächlich lösen muss.
Führen Sie es nun mit den richtigen Parametern aus, z
python3 hw.py 1 2 3
Edit : In der vorherigen Version fehlte ein Komma in "Hello, World!"
Edit 2 : Nur zum Spaß, hier ist eine fast identische Pyth-Version (47 Bytes) des gleichen Codes:
Die Eingabe erfolgt aus
stdin
und erfolgt in Form einer Liste von Argumenten, z[1,2,3]
Ich sehe keinen Grund, eine separate Antwort zu veröffentlichen, denn wenn Sie die Pthyon3-Version knacken, knacken Sie auch die Pyth-Version, auch ohne Pyth zu kennen.
Antworten:
Erklärung des Codes:
In Python zur Lösung kommen:
quelle
literal_eval()
dasast
Modul verwendet werden, um Ausdrücke sicher auszuwerten, so dass dasprint(
Code-Injection-Problem nicht funktioniert. Es ist hier wahrscheinlich nicht relevant, aber ich dachte nur, ich würde es erwähnen.Hello, World!
? Noch nicht geknackt, aberTeX - 38 Bytes geknackt (ish)
Das ist einen Versuch wert, denn ich kann mir nicht vorstellen, dass jemand auf einer Site, der kurze Codestücke schreibt, TeX kennt:
Um es auszuführen, sollten Sie sich eine Form von TeX besorgen, die den interaktiven Modus ermöglicht. Speichern Sie dies in einer Datei und führen Sie TeX (oder pdfTeX, XeTeX usw.) darauf aus.
Edit: Ich überlege gerade, diese halb geknackt. Die beabsichtigte Lösung verwendet die Eingabe von stdin, aber die teXnische Eingabe von der Art, wie das Programm aufgerufen wird, ist gültig. Ich füge weitere verschlagene TeX-Antworten hinzu, wenn jemand die beabsichtigte Methode erhält.
Hier ist die beabsichtigte Lösung:
Das mag hintergangen sein, sollte aber immer noch den Spielregeln entsprechen.
quelle
tex \ Hello, world!\bye
(23 Bytes) zu verwenden?texnically
oh Gott.> <> , 538 Bytes, Cracked von Rexroni
Probieren Sie es online aus oder nutzen Sie den Fischspielplatz .
Die ersten drei Zeilen lesen eine Zeichenkette aus STDIN ein und verwenden ihren Zeichencode mod 26 als Koordinaten, um die Zeichen "
>/v>v\v</>
" in das Labyrinth darunter zu setzen. Die beabsichtigte Lösung ist eine 20-stellige Zeichenfolge, die nur aus den Buchstaben A – Z besteht (obwohl Sie natürlich alles verwenden dürfen, was Sie wollen).Lösung:
quelle
Oktave, 59 Bytes, Gebrochen
Dies funktioniert in Octave 4.2.0. Ich kann die Kompatibilität nicht mit allen Versionen garantieren.
Hinweis: Hiermit werden keine nachgestellten Leerzeichen oder Zeilenumbrüche gedruckt. So sieht es aus:
Grundsätzlich heißt es: "Geben Sie die Eingabezeichenfolge aus, es sei denn, die Eingabe lautet" Hallo, Welt! ". In diesem Fall sollte nichts (oder das Nullzeichen) ausgegeben werden.
quelle
%c
das Zeichenfolge oder Zeichen bedeutet ... Vielleicht versteckst du etwas? Auch das*~
macht mich ein bisschen misstrauisch ...\n
. Ich dachte, der Fragentext besagt " optionaler Zeilenumbruch ".CJam , 7 Bytes ( geknackt )
Probieren Sie es online!
Vorgesehene Eingabe:
quelle
MATL , 6 Bytes. Geknackt
Probieren Sie es online!
quelle
['Hello,' 1 'World!']
. Warum betrügen? :-( Das Dokument / die Hilfe fürD
sagt, dass die meisten eingegebenen Zeichen unter 32 durch Leerzeichen ersetzt werdenExplodieren , 23 Bytes, Gebrochen
Weitere kommen, das ist nur der Anfang> :)
Probieren Sie es online!
Explorer Erklärung
Es gibt vier Entdecker in diesem Programm. Ich bin nicht ganz sicher, ob wait (
>
) richtig funktioniert.Benutzereingaben lesen (
?
), Band schreiben und ausfahren (@
) (_
).4
Ändern Sie für 4 Ticks ( ) das Band (&
) nach unten (_
) und springen Sie um 5 (5
), indem Sie (-
) 19 (j
) subtrahieren .f
Ändern Sie für 16 Teilstriche ( ) das Band (&
)^
in einer Welle ( ) nach oben ( )~
, und wechseln Sie zwischen no affect, +13, no affect und -13 (c
).6
Ändern Sie für 6 Ticks ( ) das Band (&
) in beide Richtungen (|
), indem Sie es jedes Mal\
um 4 (4
) verringern und um 7 (7
) springen . Verringern bedeutet, dass 4 beim ersten Mal, 8 beim zweiten Mal usw. abgezogen werden.quelle
JavaScript (ES6),
173169163150151148143 Byte ( Gebrochen )Lassen Sie uns etwas ganz anderes haben ... und ganz Böses .
Verwendung:
f(something) // returns 'Hello, World!'
Probieren Sie es online!
quelle
C # (.NET Core) ,
130152 Bytes, CRACKED+22 Bytes, ich habe vergessen, eine neue Zeile zu schreiben ... Das Programm funktioniert genauso wie zuvor, die neue Zeile wird zu jeder Ausgabe hinzugefügt.
Probieren Sie es online!
Die Byteanzahl umfasst auch
Zum einen habe ich mich für etwas nicht allzu Verrücktes entschieden. Es kann mehrere Antworten geben.
Der "offizielle" Riss:
quelle
tcc, 89 bytes, geknackt von Dennis
Dies ist aufgrund der dynamischen Auflösung von tcc besonders schlimm. Viele Funktionen sind vordeklariert und es funktioniert einfach nicht, sie zu überschreiben.
quelle
puts
und ich dachte, dass Ausgänge.)mprotect
ist ein Hintern.Bash , 62 Bytes, ( geknackt von ArchDelacy )
Keine alphanumerischen Zeichen oder Schrägstriche. Du solltest Spaß damit haben.
Probieren Sie es online!
quelle
Brainfuck , 7 Bytes geknackt
Probieren Sie es online!
Viel Glück. (funktioniert nicht mit jedem BF-Interpreter
quelle
JavaScript (ES6), 102 Byte ( geknackt )
Die vorherige Version hat einen massiven Käse. Versuchen wir es noch einmal ...
Probieren Sie es online!
Autorenlösung:
Verwendung:
quelle
Kubisch 159 Bytes ( geknackt )
Dies wird für diejenigen, die mit Cubically vertraut sind, ziemlich einfach sein. Probieren Sie es online!
quelle
6502 Maschinencode (C64),
5153 Bytes ( geknackt )Online-Demo
Usage :
SYS49152,[x],[n]
, wobeix
ein 16 - Bit Integer ohne Vorzeichen undn
ist eine 8 - Bit - Ganzzahl ohne Vorzeichen.Ausgeführt mit falschen Werten, ein Absturz ist sehr wahrscheinlich .
Zum Knacken möchten Sie es möglicherweise in einer lokalen Installation von vice ausführen. Hier ist also ein BASIC-Loader, den Sie in den Emulator einfügen können (
RUN
um das Programm dort abzulegen$C000
):Update: Zwei Bytes für die Ladeadresse hinzugefügt, um diese als
PRG
Antwort auf die Diskussion über Meta zu einer ausführbaren C64- Datei zu machenquelle
b7eb
ruft aufaefd
, aber erst nach dem Aufrufen vonad8a
(parse number as float (!) (wtf) (MS)) undb7f7
(konvertiere das float in 16bit unsigned int) - also muss ichaefd
mich zuerst für den Verbrauch des ersten Kommas aufrufen .Python 2 , 63 Bytes, geknackt
Nur um den Ball ins Rollen zu bringen ...
Probieren Sie es online!
quelle
Pyth , 18 Bytes ( geknackt )
Dies ist extrem einfach, und jeder, der Pyth kennt, würde es im Handumdrehen knacken, aber trotzdem ... Beachten Sie, dass Sie den String zwischen Anführungszeichen setzen müssen.
Probieren Sie es online!
quelle
JavaScript (nur Browser), 95 Bytes ( geknackt )
Nicht zu schwer. Hat mehrere Lösungen.
quelle
Gelee , 11 Bytes ( geknackt )
Probieren Sie es online!
Vorgesehene Eingabe:
quelle
05AB1E , 20 Bytes ( geknackt )
Sollte aber nicht zu schwer sein:
Verwendet die 05AB1E- Codierung. Probieren Sie es online!
quelle
Ly , 12 Bytes ( geknackt )
Probieren Sie es online!
Ich erwarte nicht, dass dies sehr lange dauert, aber na ja.Es dauerte nicht sehr lange.quelle
Python3, 192 Bytes Gebrochen, denke ich
Der gelesene Text ist das erste Programmargument:
python3 hw.py '[1,2,3]'
print("Hello World!")
Seien Sie nicht lahm und versuchen Sie, eine Aussage als Argument zu verwenden. Es wird trotzdem ein Fehler ausgegeben (zumindest in der Befehlszeile), daher denke ich, dass dies nicht zählen sollte. (Edit: jemand hat genau das gemacht)quelle
Gelee ,
2021 Bytes ( Gebrochen )+1 Byte - "... und eine abschließende Zeile"
Probieren Sie es online!
Es gibt in der Tat unendlich viele Lösungen.
quelle
⁸
der aus irgendeinem Grund im TIO-Link fehlt, also hoffe ich, dass ich mich nicht verwirrt habe.Lua 5.1, 44 Bytes ( geknackt )
Beachten Sie, dass Lua 5.1 eine andere Sprache als Lua 5.2 oder Lua 5.3 ist. "Online ausprobieren" hat Lua 5.1 nicht. Sie können Ihre Lua-Version überprüfen, indem Sie ausführen
print(_VERSION)
. (In jeder Implementierung, die den Lua 5.1-Kern von PUC-Rio verwendet, sollte es eine Lösung geben.)Als Testgeschirr können Sie Folgendes verwenden:
Kabelbaum auf Repl.it testen
quelle
C (GCC auf TIO), 84 Byte golfed ( Gebrochen )
Hier ist eine ungolfed Version, die auch funktioniert:
quelle
JavaScript (ES6), 92 Bytes ( geknackt )
Diese einfache Funktion zum Kopieren von Strings scheint wirklich zu verhindern , dass Sie Strings kopieren, die
Hello, World!
...Probieren Sie es online!
quelle
Röda , 71 Bytes ( Gebrochen )
Probieren Sie es online!
Verwendung:
push(/* input */) | f()
(wobei f eine Variable ist, die die obige Funktion enthält).quelle
JavaScript (ES6),
135119 Byte, ( geknackt )Probieren Sie es online!
quelle
Ruby , 88 Bytes, Cracked von w0lf
Probieren Sie es online!
quelle
JavaScript (ES6) 107 Bytes [Danke Евгений Новиков] ( Gebrochen )
Rufen Sie die
i
Funktion mit einem String auf.Das
console.log...
dient zu Testzwecken.Probieren Sie es online!
quelle
var
, (2 ) Entfernen()
von einem Pfeilfunktionsargument, (3) Ersetzenreturn
biseval("")
(4) Löschen;
am Ende. 110-Byte-Lösung: pastebin.com/qwdm7fT7 Viel Glück