Herzlichen Glückwunsch an Dennis, der sowohl die Herausforderung der Bullen als auch der Räuber gewonnen hat! Calvins Hobbys haben sein Versprechen bereits eingelöst und diese Herausforderung für Dennis geschrieben, weil er die Räuberherausforderung gewonnen hat.
Hinweis: Diese Challenge ist ab 2015-09-01 02:00:00 UTC für weitere Cop-Antworten geschlossen. Alle neuen Antworten sind nicht gewinnberechtigt und zählen nicht für die Räuberwertung, wenn sie geknackt werden. Sie können jedoch immer noch neue Antworten für die anderen Benutzer veröffentlichen, sodass für zukünftige Besucher noch einige Rätsel verfügbar sind. Diese neuen Antworten sind im Abschnitt "Vulnerable Cops" der Rangliste enthalten, und ihr Nichtkonkurrenzstatus wird separat gekennzeichnet.
Willkommen zur Cops-and-Robbers-Ausgabe des Hello World Quiz ! (Wenn Sie das Quiz noch nie gespielt haben, können Sie es eine oder 30 Minuten lang ausprobieren. Sie müssen es für diese Herausforderung jedoch nicht gespielt haben.)
Die Herausforderung der Polizei
- Wählen Sie eine Programmiersprache. Gültige Sprachen müssen entweder einen englischen Wikipedia-Artikel , einen Esolangs-Artikel oder einen Rosetta-Code-Artikel zum Zeitpunkt der Veröffentlichung dieser Herausforderung enthalten (beachten Sie, dass die verknüpften Listen nicht unbedingt vollständig sind, da sie manuell erstellt wurden). Sie müssen auch unseren üblichen Standards für Programmiersprachen entsprechen , so dass Dinge wie HQ9 + draußen sind. Schließlich muss ein kostenloser (wie im Bier) Dolmetscher oder Compiler für die Sprache verfügbar sein (zum Zeitpunkt der Veröffentlichung dieser Herausforderung).
Schreiben Sie ein Hello World-Programm. Das heißt, schreiben Sie ein vollständiges Programm in der gewählten Sprache, das Hello, World!
(genau so, dh genau dieser Byte-Datenstrom) und optional eine einzelne nachgestellte Newline zu STDOUT oder der nächstgelegenen Alternative druckt.
Sie dürfen keine REPL-Umgebung, keinen vorhandenen Boilerplate-Code oder nicht standardmäßige Compiler- / Interpreter-Flags annehmen. Das Programm muss in Form einer oder mehrerer Quelldateien vorliegen (um eigenwillige Sprachen wie Ordner auszuschließen ) und muss vollständig in Ihre Antwort passen (es darf also nicht länger als 30.000 Zeichen sein) - dies sollte kein Problem für sein jede ernsthafte Vorlage.
Wenn Ihr Code Bytes außerhalb des druckbaren ASCII-Bereichs enthält, fügen Sie bitte einen Pastebin oder Hex-Dump ein, um sicherzustellen, dass Ihr Code tatsächlich testbar ist.
Das Programm muss auf einem typischen Desktop-PC innerhalb von 1 Minute beendet werden.
Das ist es. Der Haken ist, dass Sie Ihren Code so verschleiern möchten, dass nicht klar ist, welche Sprache Sie gewählt haben. Beachten Sie auch, dass Ihr Code nicht versehentlich ein gültiges Hello World-Programm in einer anderen Sprache sein soll, obwohl ich davon ausgehe, dass dies für ausreichend verschleierte Programme unwahrscheinlich ist.
Sie dürfen auf keinen Fall den Quellcode Ihres Beitrags ändern, sobald dieser veröffentlicht wurde (da dies die aktiven Versuche eines Räubers, Ihre Antwort zu knacken, ungültig machen kann). Stellen Sie also sicher, dass Sie Golf spielen, so gut Sie können (oder es wagen), bevor Sie etwas veröffentlichen. Wenn Sie feststellen, dass Ihre Antwort nach dem Posten nicht funktioniert, löschen Sie einfach Ihre Antwort und veröffentlichen Sie eine feste Version, wenn Sie möchten.
Wenn niemand eine Sprache findet, in der Ihr Code 7 Tage lang gültig ist, können Sie die gewählte Sprache offenlegen (idealerweise mit einer Erklärung für Ihren verschleierten Code), was Ihre Antwort sicher macht . Beachten Sie, dass Ihr Beitrag immer noch geknackt werden kann, bis Sie die Sprache enthüllen.
Die kürzeste sichere Übermittlung (in Byte) gewinnt.
Formatierung
(Überspringen Sie diesen Abschnitt und lesen Sie The Robbers 'Challenge, wenn Sie gerade nicht vorhaben, als Polizist teilzunehmen.)
Am Ende dieses Beitrags finden Sie ein Stack-Snippet, das Bestenlisten generiert, sowie eine Liste von Einsendungen, die noch geknackt werden können. Damit das Snippet funktioniert, ist es wichtig, dass Sie einen bestimmten Header in Ihre Antwort einfügen:
Neue Antworten sollten einen Header wie enthalten
# ???, [N] bytes
Wo [N]
ist die Größe Ihres Codes in Bytes und ???
sollte wörtlich angezeigt werden.
Wenn die Antwort 7 Tage lang nicht geknackt wird und Sie Ihre Antwort durch Offenlegen der Sprache sicher machen möchten, ersetzen Sie einfach die ???
, z
# Ruby, [N] bytes
Fühlen Sie sich frei, den Namen der Sprache auf eine relevante Website wie eine Esolangs-Seite oder ein GitHub-Repository verlinken zu lassen. Der Link wird dann in der Bestenliste angezeigt.
Wenn ein anderer Benutzer Ihren Beitrag erfolgreich geknackt hat (siehe unten), fügen Sie bitte auch die Sprache hinzu, zusammen mit einem Hinweis wie
# Ruby, [N] bytes, cracked by [user]
Wo [user]
ist der Name des Benutzers, der den ersten gültigen Riss eingereicht hat? Wenn die in dem Riss verwendete Sprache von der von Ihnen beabsichtigten abweicht, würde ich empfehlen, die Vermutung der Räuber zu verwenden und in der Antwort zu erwähnen, dass Sie beabsichtigten, dass es sich um etwas anderes handelt. Fühlen Sie sich frei, den Benutzernamen als Link zu ihrer Profilseite zu verwenden.
Die Herausforderung der Räuber
- Finde eine verletzliche Antwort. Das ist eine Antwort, die noch nicht geknackt wurde und die noch nicht sicher ist.
Knacken Sie es, indem Sie seine Sprache herausfinden. Das heißt, finden Sie alle Sprachen, in denen das angegebene Programm ein gültiges Hello World-Programm ist (vorbehaltlich der Regeln in The Cops 'Challenge oben). Es ist egal, ob dies die Sprache ist, die der Cop beabsichtigt hat.
Wenn Sie eine solche Sprache gefunden haben, hinterlassen Sie einen Kommentar mit dem Namen der Sprache. Wenn möglich, sollten Sie einen Link zu einem Online-Dolmetscher einfügen, der zeigt, dass der Code tatsächlich in der gewünschten Sprache funktioniert.
Jeder Benutzer erhält nur eine Vermutung pro Antwort. Sie dürfen Ihre eigene Antwort nicht knacken (offensichtlich ...).
Der Benutzer, der die meisten Antworten geknackt hat, gewinnt die Herausforderung der Räuber. Krawatten werden durch die Summe der Bytes der geknackten Antworten unterbrochen (mehr ist besser).
Da die Räuberherausforderung ausschließlich in Kommentaren festgehalten wird, gibt es für die Räuber keinen Rufanreiz. Der Großmeister des Herausforderungsschreibens, Calvins Hobbys , hat jedoch freundlicherweise angeboten, eine Herausforderung über den Benutzer zu schreiben, der die Herausforderung der Räuber gewinnt!
Herausforderungs-Dashboard
Das Stack Snippet unten generiert Bestenlisten für die Bullen und Räuber und listet auch alle Antworten auf, die noch geknackt werden können. Lassen Sie mich wissen, wenn etwas nicht richtig funktioniert, und ich werde versuchen, es so schnell wie möglich zu beheben. Wenn Sie sich zusätzliche Funktionen vorstellen können, die das Dashboard nützlicher machen würden, hinterlassen Sie ebenfalls einen Kommentar.
/* Configuration */
var QUESTION_ID = 54807; // Obtain this from the url
// It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var DAYS_TILL_SAFE = 7;
var OVERRIDE_USER = 8478;
var CUTOFF_DATE = new Date(Date.UTC(2015, 8, 1, 2));
var MS_TILL_SAFE = DAYS_TILL_SAFE * 24 * 60 * 60 * 1000;
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
// Must load over https (this comment is because I need to change 6+ chars)
return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var VULNERABLE_REG = /<h\d>[?]{3},[^\n\d,]*(\d+)[^\n,]*<\/h\d>/;
var SAFE_REG = /<h\d>\s*([^\n,]*[^\s,]),[^\n\d,]*(\d+)[^\n,]*<\/h\d>/;
var CRACKED_REG = /<h\d>\s*([^\n,]*[^\s,]),[^\n\d,]*(\d+)[^\n,]*,\s*cracked\s*by\s*(.*[^\s<])<\/h\d>/i;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
console.log(answers);
var vulnerable = [];
var cops = [];
var robbers_hash = {};
var now = Date.now();
answers.forEach(function (a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match;
if (VULNERABLE_REG.test(body)) {
vulnerable.push({
user: getAuthorName(a),
size: +body.match(VULNERABLE_REG)[1],
time_left: (a.creation_date*1000 > CUTOFF_DATE) ? Infinity : MS_TILL_SAFE - (now - a.creation_date*1000),
link: a.share_link,
});
} else if (SAFE_REG.test(body)) {
if (a.creation_date*1000 < CUTOFF_DATE) {
match = body.match(SAFE_REG);
cops.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
}
} else if (CRACKED_REG.test(body)) {
if (a.creation_date*1000 < CUTOFF_DATE) {
match = body.match(CRACKED_REG);
var language = match[1];
var size = +match[2];
var user = match[3];
if (/<a/.test(user)) user = jQuery(user).text();
var robber = robbers_hash[user] || {
user: user,
cracks: 0,
total_size: 0,
languages: [],
};
++robber.cracks;
robber.total_size += size;
robber.languages.push({
language: language,
link: a.share_link,
});
robbers_hash[user] = robber;
}
}
})
console.log(vulnerable);
console.log(cops);
console.log(robbers_hash);
vulnerable.sort(function (a, b) {
var aB = a.time_left,
bB = b.time_left;
return aB - bB
});
vulnerable.forEach(function (a) {
var answer = jQuery("#vulnerable-template").html();
var time = a.time_left;
var time_string = "";
if (time == Infinity)
time_string = "Answer is not competing";
else if (time > 0) {
time_string += ((time / (1000 * 60 * 60 * 24))|0) + "d ";
time %= 1000 * 60 * 60 * 24;
time_string += ((time / (1000 * 60 * 60))|0) + "h ";
time %= 1000 * 60 * 60;
time_string += ((time / (1000 * 60))|0) + "m ";
time %= 1000 * 60;
time_string += ((time / (1000))|0) + "s";
}
else
time_string = "Cop may reveal language!";
answer = answer.replace("{{NAME}}", a.user)
.replace("{{SIZE}}", a.size)
.replace("{{TIME}}", time_string)
.replace("{{TIME}}", a.time_left)
.replace("{{HUE}}", a.time_left <= 0 ? 0 : a.time_left == Infinity ? 160 : a.time_left/MS_TILL_SAFE*80+40)
.replace("{{LINK}}", a.link);
answer = jQuery(answer)
jQuery("#vulnerable").append(answer);
});
cops.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var place = 1;
var lastSize = null;
var lastPlace = 1;
cops.forEach(function (a) {
var answer = jQuery("#cops-template").html();
var size = a.size;
if (size != lastSize)
lastPlace = place;
lastSize = size;
++place;
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer)
jQuery("#cops").append(answer);
});
var robbers = [];
for (var r in robbers_hash)
if (robbers_hash.hasOwnProperty(r))
robbers.push(robbers_hash[r]);
robbers.sort(function (a, b) {
var aB = a.cracks,
bB = b.cracks,
aC = a.total_size,
bC = b.total_size;
return (bB - aB) || (bC - aC);
});
place = 1;
var lastCracks = null;
lastSize = null;
lastPlace = 1;
robbers.forEach(function (a) {
var answer = jQuery("#robbers-template").html();
var cracks = a.cracks;
var size = a.total_size;
if (size != lastSize || cracks != lastCracks)
lastPlace = place;
lastSize = size;
lastCracks = cracks;
++place;
var languages = "";
var first = true;
a.languages.forEach(function (l) {
if (!first) {
languages += ", ";
}
first = false;
var lang = l.language;
if (/<a/.test(lang)) lang = jQuery(l.language).text();
languages += '<a href="' + l.link + '">' + lang + '</a>';
});
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{CRACKS}}", a.cracks)
.replace("{{TOTAL_SIZE}}", a.total_size)
.replace("{{LANGUAGES}}", languages);
answer = jQuery(answer)
jQuery("#robbers").append(answer);
});
}
body { text-align: left !important}
#vulnerable-cops {
padding: 10px;
width: 600px;
}
#cops-leaderboard {
padding: 10px;
width: 600px;
}
#robbers-leaderboard {
padding: 10px;
width: 600px;
}
table thead {
font-weight: bold;
}
table td {
padding: 5px;
}
.time-ms {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b">
<div id="vulnerable-cops">
<h2>Vulnerable Cops</h2>
<table class="vulnerable-cops">
<thead>
<tr><td>User</td><td>Size</td><td>Time Left</td></tr>
</thead>
<tbody id="vulnerable">
</tbody>
</table>
</div>
<div id="cops-leaderboard">
<h2>Leaderboard of Safe Cops</h2>
<table class="cops-leaderboard">
<thead>
<tr><td></td><td>User</td><td>Language</td><td>Size</td></tr>
</thead>
<tbody id="cops">
</tbody>
</table>
</div>
<div id="robbers-leaderboard">
<h2>Leaderboard of Robbers</h2>
<table class="robbers-leaderboard">
<thead>
<tr><td></td><td>User</td><td>Cracks</td><td>Total Size</td><td>Languages (link to answers)</td></tr>
</thead>
<tbody id="robbers">
</tbody>
</table>
</div>
<table style="display: none">
<tbody id="vulnerable-template">
<tr><td>{{NAME}}</td><td>{{SIZE}}</td><td style="background-color: hsl({{HUE}},100%,50%);">{{TIME}}</td><td><a href="{{LINK}}">Link</a></td><td class="time-ms">{{TIME_MS}}</td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="cops-template">
<tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="robbers-template">
<tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{CRACKS}}</td><td>{{TOTAL_SIZE}}</td><td>{{LANGUAGES}}</td></tr>
</tbody>
</table>
Antworten:
Wach auf , 17 Bytes
Laut der offiziellen Website ,
Wake wurde von Shinh erstellt und kann auf seinem Golfserver Anarchy Golf getestet werden .
Der Code besteht aus einer einzelnen Zeile, die ein Ziel / Etikett und eine Aktion enthält. Da die Aktion ein String-Literal ist, wird sie an STDOUT ausgegeben.
Das Verwenden
"
für das Ziel diente zwei Zwecken:Es bietet Polyglot-Schutz.
Clip und Foo drucken
:
; GolfScript und CJam lösen einen Syntaxfehler aufgrund einer unvollendeten Zeichenfolge aus.Es gibt ein wenig Unsicherheit darüber, wie der Code funktionieren soll.
quelle
":
ein gültiges Zeilenpräfix darstellt und ein String-Literal in der tatsächlichen Zeile als Ausgabebefehl behandelt. Oder 2: Dass es String - Substitution und<foo>:<bar>
entfernt<foo>
aus<bar>
. Ectoforte von der esolangs-Wiki-Forte-Seite erfüllt eine Art von 1, aber der verknüpfte Interpreter bricht mit einem doppelten Anführungszeichen im Etikett und ich weiß nicht, ob es ganz als Sprache gilt.TinyBF , 708 Bytes, geknackt von kirbyfan64sos
Das war ein verrückter Spaß. Jeder weiß, dass ich nur eine Sprache schreiben kann;)
Erläuterung
Zuallererst hat es viele, viele Stunden gedauert, also bin ich überwältigend erfreut über all die positiven Reaktionen und Versuche, es zu knacken!
Wie in den Kommentaren erwähnt, wird beim Kompilieren in C der Code
Gotcha!
gefolgt von einer neuen Zeile gedruckt, bei TinyBF jedoch die gewünschteHello, World!
. TinyBF ist ein einfaches Derivat von Brainf ** k , die mit nur 4 seiner 8 Befehle ersetzt:+ > | =
. Da alle anderen Zeichen ignoriert werden, könnte ich gerne ein C-Programm mit vielen unnötigen Operatoren schreiben, um zu versuchen, die Leute in die falsche Richtung zu führen (was zu meiner Überraschung ziemlich gut funktionierte). Hier ist der reine TinyBF-Code:Hier ist das gleiche Programm, geschrieben in normalem BF:
Mit diesem Interpreter können Sie von BF nach TinyBF konvertieren und den Code ausführen.
quelle
main()
. Könnte es C sein? http://codepad.org/pj9mQgyQ (Hinweis: Es gibt ausGotcha!
)I,c,o,d,e,C;i;main()
würde ignoriert (abgesehen davon,;
aber es scheint nicht wichtig zu sein), und die große Menge!
davon, die zur Ausgabe von ASCII-Zeichen verwendet wird, könnte ein Zeichen dafür sein, dass es das ist. Ich kann Fission 's Interpreter nicht herunterladen und jetzt nachsehen.Übel , 658 Bytes, geknackt von Sp3000
Das Böse ist ein alter Esolang, ein bisschen wie BF. Bei den Befehlen handelt es sich ausschließlich um Kleinbuchstaben. Andere Zeichen werden einfach ignoriert.
Zuerst habe ich mit Python ein kurzes Hallo-Welt-Programm in Evil generiert:
Dann, wieder mit Python, habe ich es in einen base64-String umgewandelt:
Das entschlüsselt sich in Kleinbuchstaben:
Ich habe ein paar andere Dinge zum base64-String hinzugefügt und ihn dann als Python-Programm oben geschrieben.
Der Shebang ist eigentlich wichtig im Programm. Das
s
vor demb
insbin
wird denb
Befehl überspringen . Dann wird dief
infortran
scannt nach vorne bis zum nächstenm
Zeichen, die in dem Base64 - String ist.quelle
aeeeaeee...
werden mit zufälligen Zeichen gemischt, sodass die resultierende Zeichenfolge eine gültige base64-Zeichenfolge ist. Ich habe die zufälligen Zeichen so gewählt, dass die resultierende Zeichenfolge mit der Basis 64 in Kleinbuchstaben dekodiert wird, aber die dekodierte Zeichenfolge ist eigentlich irrelevant - es ist nur eine Ablenkung. Das Einzige, was zählt, ist, dass das Böse die base64-Zeichenfolge ausführt, die Groß- und Kleinbuchstaben jedoch ignoriert, da sie keine Befehle sind, und das Hello World-Programm verlässt.Lua,
29202865 Bytes, geknackt von jimmy23013Ich habe diese Sprache erst gestern gelernt, also verzeihen Sie Syntaxfehler.
Warnung: Es wird "Hallo Welt!" und wird dann mit einem Fehler beendet
Erläuterung:
In Lua bedeutet - [[mehrzeiliger Kommentar, - einzeiliger Kommentar und [[mehrzeiliger String.
Wenn Sie in der ersten Zeile ganz zur Seite scrollen, sehen Sie ein sehr verdächtiges p = [[. Dies definiert eine mehrzeilige Zeichenfolge, die von "Romeo, ein junger Mann" bis hinunter zu "Let them]]" reicht, über die die meisten Leute einen Blick werfen, die jedoch tatsächlich die mehrzeilige Zeichenfolge beenden. Dann haben wir print, das ist die Druckfunktion, und dann macht "-" den Rest der Zeile zu einem Kommentar. Wir müssen etwas Platz zwischen dem Druck und der Hallo-Welt schaffen, damit wir sie nicht verraten, also haben wir einen mehrzeiligen Kommentar: "- [[Romeo schluchzt, angewidert über sein Leben) - Du bist so scharf wie der Gestank einer Ziege Sprich deine Meinung aus! [[Exeunt Romeo]] "Das]] am Ende beendet den mehrzeiligen Kommentar und in der Zeile danach steht" Hallo, Welt! " und dann wird der Rest der Zeile durch ein - auskommentiert.
quelle
Hello, world!
nichtHello, World!
.TRANSCRIPT , 39 Bytes
Hier ist eine schöne und einfache.
Erster sicherer Bulle! Ich bin überrascht, dass dies bis zum Ende gedauert hat - ich habe versucht, eine Sprache auszuwählen, die schwer direkt nachzuschlagen ist, die aber leichter zu knacken ist, wenn Sie das Thema erraten können.
TRANSCRIPT ist ein Esolang, der auf interaktiven Fiction-Spielen basiert. Es hat NPCs (Strings) und Objekte (Ganzzahlen). Hier
End
ist der Name eines NPCs.Die erste Zeile deklariert den NPC mit der Syntax
<name> is here.
. Die zweite Zeile weist dem NPC dann die Zeichenfolge zu"Hello, World!"
, und die dritte Zeile gibt die Zeichenfolge mit demX / EXAMINE
Befehl aus. Hier ist nicht viel Platz für Verschleierung, also habe ich nur etwas ausgewählt, das normalerweise kein Name für den NPC ist.Um zu beweisen, dass TRANSCRIPT eine gültige Sprache für diese Herausforderung ist, gibt es ein Programm, das prüft, ob eine eingegebene natürliche Zahl eine Primzahl ist oder nicht:
Als Randnotiz, ich war seit @ aditsus Vermutung tatsächlich nervös, was sehr nahe lag. Inform 7 ist eine Sprache zum Erstellen interaktiver Fiction-Spiele, von denen ich nicht einmal wusste, dass sie existieren.
Als Hommage an Aditsus Versuch habe ich Inform 7 ausprobiert:
Und hier ist ein Probelauf:
quelle
Headsecks , 637 Bytes, geknackt von Dennis
Headsecks ist eine Kodierung an BF über Codepunkte modulo 8. Das obige Programm gibt, wenn es konvertiert wird
Es gibt eine Menge nutzloser Paare wie
+-
oder<>
da drin, und das Wegziehen gibtSie werden vielleicht bemerken, dass einige Schleifen
,
(Eingaben) enthalten - diese Schleifen werden niemals ausgeführt und dienen lediglich dazu,e
s zu einem Programm hinzuzufügen , das sonst verdächtigerweise nura
s undi
s als seine einzigen Vokale gehabt hätte .Die Syntax, Backticks, Fremdwörter
)
usw. waren allesamt rote Heringe.quelle
herrings are red
??? 344 Bytes, geknackt von jimmy23013
Hier ist ein Hexdump der Datei:
Ich habe mit einem Piet-Programm begonnen, das druckt
Hello, world!
. Das Bild selbst enthielt ein paar gültige ??? Anweisungen (,,,!;
), aber nicht genug, um Probleme zu verursachen.Folgende ??? Das Programm erzeugt die gewünschte Ausgabe und endet mit den Anweisungen im Bild:
Um es im Bild auszublenden, habe ich die Anzahl der Farben in der globalen Palette von 32 auf 64 erhöht (das ist das, was das 0x85-Byte in der ersten Zeile angibt) und die ersten 110 Bytes der nicht verwendeten Farben in der Palette durch die ersten 110 ersetzt Bytes der ??? Programm.
Das Ergebnis ist das erste Piet / ??? mehrsprachig.
quelle
w
und weiß, dass Dennis es wahrscheinlich nicht so einfach ist: P??? , 1052 Bytes, geknackt von Alex A.
quelle
Treehugger , 284 Bytes, geknackt von Sp3000
Dieses Programm wird in mindestens 4 Sprachen ausgeführt. Nur einer von ihnen liefert jedoch das richtige Ergebnis ...
Erläuterung:
Nachdem Sie alle ignorierten Zeichen entfernt haben, erhalten Sie Folgendes:
Das Entfernen einiger No-Op-Zeichenkombinationen ergibt Folgendes:
Welches ist im Wesentlichen eine Übersetzung des Brainf *** "Hallo Welt!" aber mit etwas zusätzlichem Code (
<++++++++++++++++++++++++++++++++++++++++++++.^
), der in das Komma eingefügt werden soll.quelle
HelloHelloHello
in Thue^
signifikant war, und aus irgendeinem Grund wird sie nicht als BF-Derivat eingestuft.Sternenklar , 3039 Bytes, geknackt von Sp3000
Hier ist etwas, um Ihnen den Einstieg zu erleichtern.
Zunächst ignoriert Starry alles außer Leerzeichen und
+*.,`'
. Also lasst uns den ganzen Müll loswerden:Jetzt ist jede Folge von Leerzeichen, gefolgt von einem Nicht-Leerzeichen, ein Befehl. Die Semantik des Befehls wird durch die Anzahl der Leerzeichen und die Verwendung von Nicht-Leerzeichen bestimmt. Zunächst erstellen die Backticks nur Labels, zu denen wir nie springen, sodass wir diese loswerden können:
Zu diesem Zeitpunkt ist dies fast genau das Hello World-Beispiel auf der esolangs-Seite , mit der Ausnahme, dass ich es ändern musste, um einen Großbuchstaben zu erhalten
W
.Um es zu verschleiern, habe ich zuerst die Backticks hinzugefügt, weil sie keine Probleme verursachten (ich konnte nicht hinzufügen,
,
oder'
weil sie Eingaben bzw. Sprünge sind). Und dann habe ich nur andere zufällige Zeichen als die reservierten hinzugefügt, sodass die Häufigkeit aller Zeichen, die keine Leerzeichen sind, ungefähr gleich ist.quelle
Brainfuck , 2545 Bytes, geknackt von Sp3000
Nur zum Spaß.
quelle
Spaltung , 67 Bytes, geknackt von BrainSteel
Hier ist eine andere, die etwas einfacher sein sollte.
quelle
R
in-Methodewrite
absichtlich groß geschrieben?Q , 64 Bytes, geknackt von Mauris
Erläuterung:
KDB + hat ein eigenes Nachrichtenprotokoll- / Serialisierungsformat , das auf Zeichenfolgen als solche angewendet werden kann:
Das gibt uns die lange hexadezimale Zeichenfolge oben. Der Umsatz, wenn Sie nicht schon erraten haben, ist
-9!
.Um es so
Hello, World!
genau auszudrucken , muss ich dazu verwenden-1
. Etwas ärgerlich ist, dass auch die Zahl selbst gedruckt wird, sodass das nachfolgende;
Zeichen verwendet wird, um dies zu unterdrücken.( Es war ein guter Lauf für etwas mehr als 2 Tage! )
quelle
Logo , 14292 Bytes, geknackt von Gareth McCaughan
Erläuterung:
make
Weist einer Variablen einen Wert zu. In diesem Fallmake 'clean
ist es nur Verschleierung, einer Variablen eine Liste in eckigen Klammern zuzuweisenclean
und dann nichts damit zu tun.type char count
wird verwendet, um ein Zeichen basierend auf der Anzahl der Elemente in der darauf folgenden Liste in eckigen Klammern auszudrucken.type
Gibt einen Wert aus,char
ein Zeichen basierend auf einem ASCII-Wert undcount
die Anzahl der Elemente in einer Liste. So wird beispielsweisetype char count [ a b c d e f g h i j ]
ein Newline-Zeichen (ASCII-Wert 10) ausgegeben.Probieren Sie es hier online aus (Ausschneiden und Einfügen der Quelle erforderlich)
quelle
Hello, world!
. +1~ Englisch überarbeitet , 36 Bytes
Diese Antwort enthält Schutz vor SPSS, Foo und Tiny. seufzt
Vier Versuche und eine weitere Antwort in derselben Sprache , aber meine Einsendung ist endlich sicher!
Erläuterung
~ Englisch ist so konzipiert , wie Klartext zu sehen, was wahrscheinlich ist , warum die zweite Veröffentlichung nicht anhängt 2 aber überarbeitet , um die Sprache des Namens.
Zum Glück gibt es Aliase der Funktionen
Display
undStop
, die bewirken , dass ~ Englisch nicht wie Englisch aussieht.Von diesen Aliasen wählte ich
Echo
undEnd
, die - zusammen mit dem Schlüsselwortand
- den Quellcode eher einer ausführlichen Skriptsprache als einem Esolang ähneln lassen.Der Satz
grüßt die Welt und
stoppt die Ausführung, sodass der folgende Foo- Schutz vom Interpreter einfach ignoriert wird.
Sie können den offiziellen Dolmetscher von GitHub herunterladen (auf der Esolang-Seite verlinkt).
quelle
Karma , 67 Bytes
In der ersten Zeile werden alle Zeichen auf den Stapel geschrieben. In der Warteschlange werden einige Bytes gespeichert. Die zweite Zeile erscheint und wird bis 0 gedruckt. Dies ist das erste Zeichen in Zeile 1.
quelle
gs2, 3 bytes, geknackt von feersum
In
gs2
:e
oder\x65
befindet sichproduct
in Listen (z. B. in der leeren Liste der Zeichen, die STDIN darstellen), sodass ein Int1
.|
oder\x7c
istpower-of-2
, was es in 2 1 = 2 ändert .h
oder\x68
isthello
, was ein lächerlicher Befehl ist. Die Geschichte lautet wie folgt: Beim Entwerfen habegs2
ich mich vorgenommen, alle Code-Golf-Sprachen auf Shinhs Golf-Server zu übertreffen, habe abergoruby
einen Osterei-Befehlh
, der gedruckt wirdHello, world!
(beachte das Kleinbuchstaben w), um den ersten Platz in der Hallo-Welt zu belegen die Bestenlisten der Herausforderung . Ich wollte Goruby eins-zu-eins, also habe ich meinen eigenen Ostereibefehl hinzugefügth
, derHello, world!
in den Stapel verschoben wird , aber Sie können die Groß- und Kleinschreibung und die Interpunktion anpassen, indem Sie eine Ganzzahl davor drücken:Wie Sie durch einen Blick auf die sehen können
s2 =
Linie, wenn es eine Zahl ist2
an der Spitze des Stapels, wird es mit dem Groß-W Variante ersetzt bekommen:Hello, World!
.quelle
U+2062 INVISIBLE TIMES
Zeichen sein, die unsichtbar sind, aber keine Leerzeichen, so dass sie die Postlänge auf mehr als 30 Zeichen auffüllen.maurisvh authored 5 days ago
ich werde es trotzdem erraten.)> <>, 353 Bytes, durch Sp3000 geknackt
Wie von Sp3000 entdeckt, ist dies ein> <> Programm. Alle nicht verwendeten Leerzeichen und Zeichen werden durch ersetzt. Zeichen für die Lesbarkeit.
quelle
MarioLANG , 549 Bytes, geknackt von Sp3000
Ich habe diesen wirklich genossen. Hier ist ein kurzer Überblick darüber, wie ich den Code erstellt habe:
Ich bin aus dem Brainfuck "Hello World!" auf esolangs:
Ich musste es leicht ändern, um das Komma hinzuzufügen, aber lassen Sie uns die Details ignorieren ...
BF kann ziemlich leicht zu ML umgewandelt werden: Änderung
>
und<
zu)
und(
ist. Fügen Sie eine Hauptetage unter dem Programm hinzu. Implementieren Sie dann Schleifen über Hilfsböden und Aufzüge. Das macht das obige Programm zu:Dies ist eine funktionierende "Hallo Welt!" Programm in MarioLANG. (Dieser Code entspricht dem falschen "Hello World!" - Code auf Esolangs, nicht dem oben angegebenen verschleierten ML-Code.)
An diesem Punkt können wir den Code ein wenig golfen, indem wir tatsächlich einen Teil des Loop-Codes in den Auxiliary Floor verschieben. Ich wechsle jetzt zum eigentlichen Code von dieser Antwort:
Und jetzt die eigentliche Verschleierung: Ich dachte, das
=
wäre ein totes Werbegeschenk für Sp3000, der die Sprache kannte (er hatte es in Evolution of OEIS verwendet). MarioLANG hat aber auch "Wände" anstelle von "Böden", dargestellt durch|
. Diese sind jedoch funktional identisch, weshalb ich den weniger verbreiteten Charakter verwendet habe. Ich dachte auch, dass der hängende Boden verdächtig aussehen würde, also füllte ich die beiden Zeilen mit anderen Zeichen. Aus gutem Grund habe ich die erste Zeile noch einmal an das Ende angehängt und das Auffüllen in der mittleren Zeile zu den entgegengesetzten Zeichen der ersten Zeile gemacht. Ich habe auch passende eckige Klammern hinzugefügt (die von MarioLANG ignoriert werden), da ich dachte, ein nicht passender[
Hinweis könnte ein weiterer starker Hinweis sein. Schließlich habe ich ein CJam-Skript geschrieben, um genau 13=
in zufällige Bodenpositionen zu streuen (13, weil das 'Hello, World!
) und änderte die Füllzeichen in der vierten Zeile,Helo, Wrd!
um es so aussehen zu lassen, als würde ich die Zeichen aus dem Quellcode lesen, wie es eine Befunge-Antwort könnte. Voilà, verschleierter MarioLANG! :)quelle
ULDR
, um einen Kontrollfluss überhaupt auszulösen . Also nein. ;)UNBABTIZED , 77 Bytes
Nachprüfung
Die offizielle Website und den Dolmetscher finden Sie hier .
Wie auf der Website vermerkt, wurde der Interpreter für Python 2.2 geschrieben, das Nicht-ASCII-Zeichen im Quellcode zulässt. Sie können entweder Python 2.2.3 1 herunterladen oder es für Python 2.7 reparieren, indem Sie die folgende Zeile am Anfang des Interpreters einfügen:
Wie es funktioniert
Erstens sollte Whitespace laut Website im Quellcode nicht erlaubt sein, aber das Nachfolgen von Whitespace nach einer vollständigen Anweisung scheint keine Probleme zu verursachen.
Der Befehl wird
$0,0
ausgeführtmemory[0] = memory[0] == memory[0]
, was die Begrüßung der Welt in keiner Weise erleichtert. Ich habe diesen Befehl nur hinzugefügt, um von der Tatsache abzulenken, dass er.
ein Anweisungstrennzeichen darstellt.Der Rest des Codes besteht aus dreizehn
:x
Befehlen, die das Zeichen mit dem Codepunkt x nach STDOUT schreiben.Eine nicht verschleierte Version des Quellcodes würde folgendermaßen aussehen:
1 Das Kompilieren von Python 2.2.3 verlief unter openSUSE 13.2 überraschend ereignislos.
make
,make install
und die resultierende ausführbare Datei druckte alle eine Menge Warnungen, aber UNBABTIZED funktionierte wie beabsichtigt.quelle
FUEUE: UNKNOWN , OP
14 MalHHeelllloo,, WWoorrlldd!!
, ohne das Programm zu verlassen.$
beginnt ein Python-Literal, was zu einem Syntaxfehler führt.Higher Subleq , 52 Bytes, geknackt von John WH Smith
Dies sieht nicht wirklich wie ein Esolang aus, aber kein vernünftiges C-Derivat würde
puts
ohne implizite Zeilenumbrüche implementiert.quelle
Mascarpone, 30 Bytes, geknackt von Sp3000
Stack-basiert? Vielleicht...
[!dlroW ,olleH]
schiebt alle diese Zeichen in den Stapel (ja, einschließlich der Begrenzer);$
knallt die]
; und dann.
druckt jeder ein Zeichen. Das Programm wird mit einem[
Zeichen beendet, das sich noch auf dem Stapel befindet.Ich hätte die Ausgabe mit einer Schleife versehen, aber ich kann nicht herausfinden, wie sie funktionieren ...
quelle
$
das]
Whirl , 12302 Bytes, geknackt von Artyom
Whirl ignoriert alles außer 1 und 0. Ich habe auch andere Ziffern zufällig geändert, aber sie sind nicht relevant. Wenn Sie nur Einsen und Nullen behalten, erhalten Sie ein "Hallo, Welt!" Beispiel :)
quelle
GNU bc, 36 Bytes
Eine Foo -immune Version meines vorherigen Versuchs .
Dies erfordert die GNU-Version (oder eine andere Version, die die
print
Funktion enthält) von bc. Die erste Zeile dient der Verschleierung: In bc müssen Variablen nicht deklariert und mit initialisiert werden0
, daher haben wir eine unnütze Zuweisung, aber eine gültige Syntax. Die zweite Zeile wird einfach gedrucktHello, World!
.quelle
module
oder einpackage
Schlüsselwort. Ich denke, es wird nicht kompiliert. Vielleicht funktioniert es in der REPL, aber das ist nicht erlaubt.main = do:
).Chef, 1943 Bytes, geknackt von Angew
quelle
APL, 39 Bytes, von Mauris geknackt
Effizienz ist alles.
Dies funktioniert in der ngn-apl-Demo .
APL zu verschleiern ist keine leichte Aufgabe, wenn die Absicht besteht, es weniger wie APL aussehen zu lassen .
Das habe ich erreicht:
Doppelte Anführungszeichen funktionieren nicht in allen Dialekten. Dyalog unterstützt sie zB nicht.
ngn / apl ist der einzige mir bekannte Dialekt, der standardmäßig eine auf Null basierende Indizierung verwendet.
Die Kommas sollen nicht da sein.
Vektorelemente werden beim Schreiben von APL normalerweise durch Leerzeichen getrennt.
,
Verkettet jedoch, sodass der Code in den Klammern 13 Singletons verkettet.Eine (etwas) unauffällige und portablere Version des Codes würde so aussehen
Dies funktioniert in TryAPL , GNU APL.js und der ngn / apl-Demo .
quelle
ngn-apl
zumindest in)Maus , 105 Bytes
Sie können einen Interpreter für Maus geschrieben in C erhalten hier .
Mouse verwendet die polnische Umkehrnotation, sodass Operatoren Operanden folgen. (Denken Sie Lisp rückwärts.) Die Variablenzuweisung erfolgt mit
<variable>:
und das Abrufen eines Variablenwerts erfolgt mit<variable>.
. Alle Werte in Mouse sind Ganzzahlen.!
Gibt eine Ganzzahl und!'
das der Ganzzahl zugeordnete ASCII-Zeichen aus. Alle Ausgaben gehen an STDOUT.Aus irgendeinem Grund müssen alle gültigen Programme mit enden
$
.quelle
Haskell , 637 Bytes
Deobfuscation Video
quelle
Wordfuck , 1063 Bytes, geknackt von Martin Büttner
Beachten Sie, dass die Zeilenenden im Unix-Stil sein müssen.
quelle
Wordy , 3279 Bytes
Wie ich in den Kommentaren angedeutet habe, handelt es sich bei diesem Heuhaufen hauptsächlich um Nadeln.
Wir können die Welt begrüßen, indem wir die folgenden Anweisungen ausführen:
Wordy codiert alle Anweisungen als Sätze, wobei der Bruchteil von Wörtern, die länger und kürzer als der gerundete Durchschnitt sind, den Befehl auswählt.
Die kürzesten Sätze, die ich für die verwendeten Anweisungen finden konnte, sind:
Aber wie kann man verbergen, dass die Wortlänge das einzig Wichtige im Quellcode ist?
Weder die Wortreihenfolge noch die ausgewählten Wortzeichen spielen eine Rolle, solange sie alphanumerisch sind. Deshalb habe ich beschlossen, jedem Wort zufällige nicht-alphanumerische Zeichen hinzuzufügen, um sie alle mit der gleichen Länge aufzufüllen. Ich habe auch ein paar Nicht-Wörter (überhaupt keine alphanumerischen Zeichen) hinzugefügt, um dem Quellcode seine ansprechende rechteckige Form zu verleihen.
Ich habe den endgültigen Quellcode mit diesem CJam-Programm generiert .
quelle