Das ist der Räuberfaden. Der Faden der Bullen ist da .
Ihre Herausforderung besteht darin, die Einreichung eines Polizisten zu knacken, indem Sie eine Eingabe finden, die ihn zum Stillstand bringt. Sie müssen nicht herausfinden, warum oder alle Eingaben, die zum Anhalten führen, wenn es mehr als eine gibt, oder die Eingabe, die der Cop beabsichtigt hat, nur eine Eingabe ist ausreichend.
Wenn Sie eine Einreichung geknackt haben, veröffentlichen Sie einen Link in einem Kommentar oder bearbeiten Sie den Beitrag des Polizisten. Sie können Ihren Beitrag auch für einen Mod kennzeichnen, um ihn im Beitrag des Polizisten zu bearbeiten. Veröffentlichen Sie außerdem die verwendete Eingabe und einen Link zum Beitrag des Polizisten in einer Antwort in diesem Thread. Der Räuber, der die meisten Einsendungen knackt, gewinnt.
Mehrere Personen können Risse an dieselbe Polizistenübermittlung senden, sofern sie unterschiedlich sind.
(Wenn SE Ihre doppelte Antwort in einen Kommentar umgewandelt hat, möchten Sie möglicherweise über diese Funktionsanforderung abstimmen. )
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.innerText = 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
Antworten:
Malbolge, Türknauf
Probiere es online aus (Danke Dennis !)
Eingabe für Windows:
F_⌠1234567890
Eingabe auf Linux-basierten Systemen mit ISO-8559-1:
F_ô1234567890
Das Herzstück der Arbeitsweise des Malbolge-Programms ist, dass es von einem Verhalten des Malbolge-Interpreters abhängt, das eine Endlosschleife auslöst, wenn es auf Befehle stößt, die nicht zwischen 33 und 126 liegen. Das Programm wurde so konstruiert, dass Sie Ihre Eingabe ändern können eine einzelne Anweisung.
Ich habe den Interpreter modifiziert, um den Programmspeicherstatus zu Beginn der Ausführung zu sichern und um auch "normalisierten" Quellcode zu erzeugen, der die Form einer Liste von Op-Codes hat , die während der Ausführung des Programms ausgeführt werden. Mit dieser Information konnte man (langsam) feststellen, dass, obwohl das Programm 13 Eingaben nahm, nur die 1. und 3. Eingabe tatsächlich von Bedeutung waren.
Durch den normalisierten Code- und Speicherauszug (und einen Hauch von Debugger-Hilfe) habe ich Folgendes entwickelt:
Wo
op
ist der sogenannte tritwise "op", der in der Spezifikation beschrieben ist. Mit diesen Informationen können Sie ein einfaches Programm schreiben, das die möglichen Eingaben (0 bis 255) durchläuft und alle Lösungen findet, die die oben genannten Kriterien erfüllen. Ich hatte 2219 mögliche Lösungen gefunden, von denen einige wahrscheinlich nicht funktionieren werden (Sie können die erforderlichen Zeichen nicht eingeben). Insbesondere basieren die obigen Eingaben auf der Lösung:(Input 1 = 70, Input 3 = 244)
quelle
F_ô
als nebenbei.JavaScript (im Browser)
Das ist überraschenderweise falsch
Edit: Warum ist
document.all
falsch ?quelle
JS (ES6), Juan Tonina
Ich habe ein bisschen reingeschaut
Object.is
, um zu finden. Im Grunde genommen ,+0 === -0
da===
prüft sie als Zahlen, und0
endlich ist , sondernObject.is
sieht+0
und-0
wie verschiedene Objekte. Sehr kluger Bulle :)Probieren Sie es online!
quelle
Python, Siphor
Wir definieren Gleichheit nur neu, um genau das zu tun, was erforderlich ist, um das Programm zum Beenden zu bringen.
quelle
__eq__
zuraise
...0
: pclass A:__eq__=lambda s,o:0
undf(A())
macht den Job.Braingolf
Beliebig weniger als
0
funktioniert.Probieren Sie es online!
quelle
PHP, Sisyphus
(-0[0)> deal with it=1
Die Funktion parse_str ändert die Leerzeichen und anderen Zeichen in Unterstriche. Wenn Sie ein [für Array-Trennzeichen verwenden, ohne es zu schließen, wird es in einen Unterstrich geändert, die folgenden Leerzeichen werden jedoch nicht übersetzt (ich weiß nicht warum).
Probieren Sie es online!
quelle
JavaScript (Node.js), Adnan
[]
und[]
scheinen zu funktionieren. Ich habe versucht , ein paar von ihnen , einschließlichnull
,undefined
,NaN
...[] >= [] && [] <= [] && [] != []
wird zu true ausgewertet.Moral der Geschichte: JavaScript ist komisch .
Probieren Sie es online!
quelle
JavaScript (ES7), Arnauld
Standard
"8e7"
ist LösungHacken
Diese Zahl muss nicht berechnet werden, wir können die
length
Eigenschaft neu definierenDies setzt
~x/x.length**3!=-2962963
auffalse
Priorität des Bedieners
~
bitweise geht es erstmal nicht** exponentiation
zweite/ division
drittequelle
Bash, Veedrac
Probieren Sie es online!
Aus der
ld.so(8)
Manpage:quelle
/bin/yes
, aber das ist möglich. In diesem Fall wird diese Umgebungsvariable ignoriert.Mathematica, JungHwan
Keine Ahnung, ob dies die beabsichtigte Lösung ist, aber es wird ein Ausdruck übergeben, der erst ausgewertet wird, wenn auf ihn als
#
innerhalb der Funktion verwiesen wird. Dadurch wird die Funktion sofort wieder verlassen, ohne dass eine weitere Auswertung erforderlich ist . Sie können sehen, dass die Funktion tatsächlich aufgerufen wird (anstatt nur die Ausnahme auszulösen, bevor Sie die Funktion aufrufen), indem Sie die Funktion folgendermaßen ändern:Welches wird in der Tat drucken,
stop
bevor der Fehler ausgelöst wird.quelle
Unevaluated[Abort[]]
, aber das Gleiche.)Retina , PunPun1000
Probieren Sie es online!
Jede Eingabe mit ns,
1
bei der die Summe der Teiler von n + 1 gleich n + 1 ist, sollte funktionieren.quelle
Rubin
ohne newline.
3.send('exit')
sicherlich nicht gleich5
, aber es führt ausKernel#exit
:Es ist möglich, rufen Sie
exit
auf ,3
weil :abort
funktioniert auch:quelle
JavaScript (Node.js) , Programmierer5000
Bereits geknackt, aber meins ist etwas anders :) Ich habe nicht genug Repräsentanten, um mich bei der Polizei zu äußern. Fühlen Sie sich auch frei zu bearbeiten, um die Formatierung zu beheben, mein erster Beitrag hier.
Hauptsächlich setze ich
__proto__
gleich eine Funktion, die wirft. Entnommen aus dem Blick auf die Mozilla-Seite für Proto. (Sorry, low rep, kann keinen Link posten.)Probieren Sie es online!
BEARBEITEN: Haben Sie einen Vertreter, also hier ist der Link: Mozilla
__proto__
quelle
Bash, Sisyphus
Zum Glück
kill
ist eine Shell eingebaut.Probieren Sie es online!
quelle
R, Jarko Dubbeldam
Wenn Sie zum ersten Mal etwas beisteuern, sollten Sie alle Fehler aufzeigen, die ich im Format gemacht habe.
Ziemlich sicher, dass dies gültig ist. Nur ein Umpacken von is.list (), oder?
quelle
Javascript, Programmierer5000
Maximale Stringlänge
Verwendet eine Zeichenfolge mit einer Länge von eins weniger als die, die Ihre Engine unterstützt. Beim Hinzufügen
"h"
zu dieser Zeichenfolge wird ein Fehler ausgegeben. Probieren Sie es online!Herkunftsübergreifender Block
Sehr inspiriert von der Antwort von @ jadkik94 , funktioniert aber überall. Erstellt einen ursprungsübergreifenden Iframe und übergibt den
.contentWindow
Iframe. Dies schlägt fehl, wenn die Funktion versucht, den Wert aus Gründen der Herkunftssicherheit zu verwenden.Primitiver Wert
Variante der
.toString()
Antworten - dies wirdtoPrimitive
stattdessen nur verwendet . Es gibt ein Objekt als primitiven Wert zurück, mit dem Javascript nicht umgehen kann (daher wird ein Fehler ausgegeben). Probieren Sie es online!quelle
Node.js, Adnan
{}
und{}
oder 2 beliebige Objekte sind die beiden Eingänge. Ich verstehe nicht einmal, wie das funktioniert.Hier ist das erstaunliche Objekt von JS zum Vergleichen der Logik:
quelle
JavaScript (Babel Node) , Conor O'Brien
(Repost, versehentlich bei der Polizei eingesetzt.) Nicht sicher, was beabsichtigt war, aber positive Dezimalstellen, die nicht enorm sind, scheinen alle zu funktionieren.
Außerdem kann ich in Cops noch keinen Kommentar abgeben.
Probieren Sie es online!
quelle
Javascript (NICHT node.js) , programmer5000
Dies kann nicht hinzugefügt werden, da ein Objekt erstellt wird, das kein toString hat, da ein neues Objekt keine
Set
Prototypen von from enthältObject
.Eingang:
Probieren Sie es online!
quelle
Bash 4.2, Dennis
Ganz klar nicht die beabsichtigte Lösung, da sie auch auf neueren Bashs funktioniert.
Probieren Sie es online aus.
quelle
Oktave , Stewie Griffin
Eingang:
exit
input
Argumentation : Wertet alles aus, was eingegeben wird.exit
Beendet das Programm.Probieren Sie es online!
quelle
Python 2, Foon
Was es auf dem Blech sagt, im Grunde.
Probieren Sie es online aus.
quelle
Python 3 (CPython), Veedrac
Probieren Sie es online!
quelle
Python 3, Siphor
Das hat Spaß gemacht. Wir müssen den
type(x) != str
Check Pass machen, also müssen wir den Rückgabewert von kontrollierentype()
. Wir müssen das__class__
Attribut überschreiben und es durch ein benutzerdefiniertes Objekt ersetzen, das erweitert wirdtype
und dessen__ne__
Methode durch ein Objekt ersetzt wird, das immer false zurückgibt. Dadurch wird die Typprüfung bestanden, die Suche schlägt jedoch fehl, dao
es sich nicht um eine Zeichenfolge handelt.quelle
C #, TheLethalCoder
Oder eine andere nullfähige Klasse.
quelle
Retina
Eine neue Zeile gefolgt von einem
1
Werk. Ich habe es sofort gefunden.Probieren Sie es online aus
quelle
JS (ES6)
Jedes Zeichen mit einem Code unter 10 sollte funktionieren. Ich habe
tab
oben ein Zeichen verwendet, das SE in Leerzeichen umwandelt.quelle
f(<tab>)
ist eine gültige Syntax (leere Eingabe) , und wir würden zwischen unterscheiden habenf(1)
undf("1")
sowiesoJavaScript (ES6), Programmierer5000
Probieren Sie es online!
Der Zustand war
!x||x>="\n"
. Jedes einzelne Zeichen in einer ASCII-Tabelle mit einem Code, der kleiner als der\n
ist, funktioniert.quelle
cQuents, Step Hen
Alles gefolgt von einem Leerzeichen und einer positiven ganzen Zahl. Das Leerzeichen trennt die Eingaben und die zusätzliche Eingabe wird zur Nummer des auszugebenden Terms.
Probieren Sie es online!
quelle
a 1
! Sie ninja'd mir: /MATL , Luis Mendo (nicht die beabsichtigte Lösung)
Die leere Eingabe stoppt das Programm und gibt folgenden Fehler aus:
Probieren Sie es online!
quelle