Für die Hauptherausforderung der Polizei klicken Sie hier
HINWEIS - Diese Herausforderung ist jetzt geschlossen. Alle Risse, die jetzt veröffentlicht werden, werden nicht in der Rangliste gezählt und die akzeptierte Antwort wird nicht geändert.
Herausforderung
Anhand des ursprünglichen Programms, seiner Ausgabe und der Ausgabe des geänderten Programms müssen Sie herausfinden, welche Zeichen geändert, entfernt oder hinzugefügt werden müssen, um die erwartete Ausgabe zu erhalten.
Wenn Sie den Code einer Person knacken, hinterlassen Sie einen Kommentar mit einem Link zu Ihrer Antwort.
Formatierung
# [<language>, <username of program owner>](<link to answer>)
## Description
<description of change and how you found it>
## Code
<changed code>
Gewinnen
Die Person, die die meisten Lösungen geknackt hat, gewinnt.
Bestenliste
13 Risse:
- Dennis
8 Risse:
- Alex Van Liew
5 Risse:
- Sp3000
- isaacg
3 Risse:
- Luis Mendo
- jimmy23013
- Dom Hastings
2 Risse:
- mbomb007
- Sluck49
1 Riss:
- Die Nummer eins
- Jakube
- ProudHaskeller
- David Zhang
- Samgak
- paul.oderso
- rayryeng
- mgibsonbr
- n̴̖̋h̴̖̋ã̷͉h̷̭̿d̷̰̀ĥ̷̳
- Stewie Griffin
- abligh
cops-and-robbers
Beta-Zerfall
quelle
quelle
Antworten:
CJam, von Mauris
Beschreibung
Mauris 'ursprünglicher Code macht folgendes:
Kein anderer mathematischer Operator von CJam würde für kleine Eingaben eine so große Zahl ergeben, dass er
:#
nicht geändert werden kann. Da#
für die Potenzierung nur Ganzzahlen als Eingabe verwendet werden,:i
können diese nicht ebenfalls entfernt werden. Dadurch bleibt nur eine Stelle zum Ändern der Eingabe: die Zeichenfolge"f~"
.Egal wie viele Zeichen die Zeichenfolge enthält, das Ergebnis ist ein linksassoziativer Power Tower. CJam unterstützt Zeichen im Bereich von 0 bis 65535 (mit Ausnahme von Surrogaten), daher müssen wir die Ausgabe als b n × k × j ausdrücken , wobei b , n , k und j ganze Zahlen in diesem Bereich sind.
Der Dezimallogarithmus der Ganzzahl, der sich aus dem geänderten Code ergibt, ist geringfügig kleiner als log 10 (2,44 × 10 242545 ) = log 10 (2,44) + 242545 , daher können wir diesen Wert durch die Logarithmen aller möglichen Basen dividieren, um die richtigen Werte zu finden für n × k × j .
Eigentlich:
Der Vergleich der ersten 8 Stellen hat sich als ausreichend herausgestellt.
Dies bedeutet , dass wir die Ausgabe als exprimieren können 5 347.004 = 15625 57.834 = 125 9 × 102 × 126 , so dass es genügt , zu ersetzen ,
"f~"
mit"㴉"
oder"} f~"
.Code
oder
Beachten Sie, dass die Leerzeichen im ASCII-Code eigentlich ein Tabulator sein sollten.
Der Versuch, diesen Code im Online-Interpreter auszuführen, ist wahrscheinlich eine schlechte Idee. Sie können die Ergebnisse jedoch folgendermaßen über die Befehlszeile überprüfen:
quelle
~f
irgendwo im Programm verwendet wird.Rubin, Histokrat
Beschreibung
X wurde durch Hinzufügen zu einem Array anstelle von skalar geändert
*
Der letzte wurde
9
durch Hinzufügen zu einer Zeichenfolge anstelle einer Zahl geändert?
Das Ergebnis besteht aus einem Array mit einem einzelnen Element (
[9]
), das neunmal multipliziert und dann"9"
als Trennzeichen implodiert wird .Code
quelle
Python 2, Schlammfisch
Beschreibung
Durch Prüfungen und Schwierigkeiten, bei denen große Zahlen faktorisiert und nach Folgefaktoren gesucht wurden, wurde mir klar, dass ein Wechsel von 87654 zu 58116 ausreichen würde. Dann habe ich 58116 als 87 * 668 faktorisiert. Dann erkannte ich, dass 01234 = 668, so dass ich nur 87654 auf 87 ändern und die 01234 vollständig entfernen musste. Dies geschieht mit einem Kommentar.
Code
quelle
print sum(range(054321)*9876)*87#654)/01234
)Shakespeare, über Feuer
In Szene III muss man Claudius in folgendem Ausschnitt in Claudio umwandeln:
Geänderter Code:
Bei Verwendung des durch @AboveFire verknüpften Compilers wird dies gedruckt
11
.quelle
Prolog, Fatalize
Beschreibung
Addiere zwei
\
s.\
ist bitweise Negation und\/
ist bitweise oder.Code
quelle
MATLAB / OCTAVE, Stewie Griffin
Ein einfaches Stück komplexer Arithmetik.
quelle
C, LambdaBeta
Beschreibung
Biegen Sie
main(a,_)
inmain(_)
. Das erste Argument von main istargc
das, das als initialisiert wird1
.Code
quelle
Python 2, rp.belrann
Ändern Sie das äußerste Listenverständnis in ein Mengenverständnis. Teilweise Dank an @ mbomb007, der alle "langweiligen" Lösungen beseitigt hat (Tauschen
x
undy
Herumtauschen, Ändern der Reichweite, Ändern der Operatoren).Erläuterung:
[(x,y)[x%2]for x in[y for y in range(8)]]
Generiert im Original die folgende Liste:Dies liegt daran , in Python 2.7, die
y
in den inneren Liste Verständnis Lecks es der letzten bekannten Wert in den umschließenden Umfang an (die, am Ende eines Bereichs, 7). Also ist im Tupely
immer 7.x
Durchläuft die Liste jedoch wie gewohnt und reicht von 0 bis 7. Wennx
gerade, wählt es den Wert vonx
, wenn es ungerade ist, wählt esy
(was immer 7 ist). Ich bemerkte, dass ich, wenn ich genau eine 7 und den Rest der Werte von einbezog,x
19 bekam; dann wurde mir klar, dass ich das äußere Verständnis in ein Mengenverständnis umwandeln könnte, das alle doppelten Werte eliminieren und mir genau 19 zurücklassen würde.Das war ziemlich clever, ich glaube, ich habe noch nie zuvor ein Set-Verständnis verwendet. Ein dickes Lob.
quelle
print len('~'*sum([(x,y)[x%2]for x in[y for y in range(6)]]))
kehrt zurück21
. Weisen Sie den Code einfach einer Variablen zu und drucken Sie ihn, wenn er der gewünschten Zeichenfolge entspricht. Wenn Sie sehenTrue
, haben Sie es geknackt._
Ich glaube, er hat mich betrogen.Jonas, Matlab / Octave
Beschreibung
Ich bemerkte, dass die Antwort war
i^pi
, also musste ich michsin
in ein Nein verwandeln .Code
s
->0
,n
->+
quelle
Bash, Dennis
Originalcode:
Originalausgabe:
Geänderter Code:
Geänderte Ausgabe:
Erläuterung:
In Bash können Sie eine durch Kommas getrennte Liste von Elementen in geschweiften Klammern wie folgt ausgeben:
druckt
Der geänderte Code gibt also eine Liste mit nichts aus, die Zahlen 1..9, nichts.
quelle
MATLAB, Luis Mendo
Originalcode:
Neue Antwort:
Beschreibung:
Geändert
-sin
inpsi
, die Polygammafunktion in MATLAB. Das-
Zeichen wird durch ersetztp
und dasn
entfernt.quelle
C, LambdaBeta
Beschreibung
Ändern Sie
-1
in,*0
so dass das Ergebnis der Multiplikation ist0
(ein falscher Wert) ist.Code
quelle
Brainfuck, Kurousagi
Beschreibung
Entfernen Sie die erste
>
und ändern Sie die erste<
in.
Getestet bei brainfuck.tk . Beachten Sie, dass die Ausgabe nicht genau mit Kurousagis Beitrag übereinstimmt , da SE nicht druckbare Zeichen aufnimmt.
Code
quelle
Fantom, Kain
Sicherheit durch Unbekanntheit ist eine sehr schlechte Form der Sicherheit (insbesondere wenn die beiden Methoden in den Fantom-Dokumenten direkt nebeneinander stehen und jeder, der weiß, wie ein Float aussieht, sofort weiß, was zu tun ist).
quelle
CJam, von Basset Hound
Berechnet e 25 . Probieren Sie es online aus.
Der Online-Dolmetscher führt in meinem Browser zu einem etwas anderen Ergebnis, was ein Rundungsproblem zu sein scheint.
Der Java-Interpreter druckt
7.200489933738588E10
die gewünschte Ausgabe, jedoch in einem anderen Format.quelle
Python 2, Sp3000
Beschreibung
Geändert
01234
zu0x1234
undmin
zu9in
.Die Tatsache, dass
4669 = (01234-1)*sum(m<<m in R for m in R)
irreführend ist.Code
quelle
m<<m in(m,n)
, aber die Hauptsache war , die sich ändernmin
zuin
.MATLAB / Octave, Stewie Griffin
Beschreibung
Dies erforderte das Negieren der Eingabe in die anonyme Funktion
g
sowie das Ändern des Skalierungsfaktors vong
Funktion auf 2 anstelle von 7:Code
quelle
Perl, hell erleuchtet
Beschreibung
Fügen Sie den Operator für die String-Wiederholung hinzu
x
und fügen Sie eine weitere Ziffer ein!Code
quelle
Java, TheNumberOne
Beschreibung
Das Programm ist eine einmalige Implementierung von
Random.next()
mit einem Anfangsstartwert vonInteger.MAX_INT
und allen Hexadezimalzahlen, die in Dezimalzahlen konvertiert wurden. Wenn Sie den Startwert in das Komplement vonMAX_INT
ändern, wird die Ausgabe generiert:(da es genau zwei Änderungen geben muss, wählen Sie eine beliebige No-Op-Änderung aus: Hinzufügen eines Leerzeichens, eines zusätzlichen Semikolons usw.)
quelle
Integer.MAX_VALUE
Integer.MAX_VALUE+1
Integer.MIN_VALUE
+1
aber seit ich es in Python gemacht habe, hat es sich zu einem langen, ahaha. Das war eigentlich mein erster Gedanke.Brainfuck, AboveFire
Bei diesem Programm handelt es sich um eine Änderung dieses Codes, die mir ein Cookie beantwortet. Diese Antwort funktioniert, indem zuerst eine Tabelle mit nützlichen ASCII-Codes von nützlichen Zeichen vorberechnet wird und dann drei bedingte Anweisungen aus drei Schleifen bestehen, die eingegeben werden, indem ein
1
in der richtigen Position ist.Der Anfang, wie ich den Code gebrochen habe, ist, dass das sich wiederholende Muster in der geänderten Ausgabe hauptsächlich das ist, was gedruckt wird, wenn Sie die dritte Schleife mit der Tabelle betreten, die nach links verschoben ist.
(die zusätzlichen Zeichen sind mit Klammern markiert)
quelle
Python 2, Schlammfisch
Beschreibung
Ändern Sie
<<
in<>
(veraltete Version von!=
) und0x156
in0156
, den Codepunkt für"n"
(der in der Zeichenfolge der Länge 23 dreimal vorkommt)'<built-in function sum>'
).Code
quelle
JavaScript von Razvan
Beschreibung
Die geänderte Ausgabe ist eindeutig Eulers natürliche Nummer, auf die zugegriffen werden kann als
Math['E']
.Durch den Wechsel
''
zu'3'
und32
nach36
wird dasString.fromCharCode
erzeugtE
.Code
quelle
Fantom, Kain
Beschreibung
Die Array-Indizierung ist bereits eingerichtet, daher muss ich nur eine 55 erstellen. Ehrlich gesagt war der schwierigste Teil das Herunterladen der Sprache.
Code
(Komma eingefügt,
0
->3
)quelle
Shakespeare, über Feuer
NICHT RICHTIG - sorry :(
Werde es weiter untersuchen, wenn ich von der Arbeit nach Hause komme. Im Original ist Claudios Wert 1132462081 und Claudius 'Wert 1
In der letzten Szene wird Claudios Wert zweimal gedruckt.
öffne dein Herz x2 = Druckwert der anderen Person auf der Bühne (Claudio). Wenn Sie also Claudius in Claudio (2 Zeichen) ändern, wird der Wert von Claudius gedruckt. Dies ist 1 - zweimal
quelle
VBA von JimmyJazzx
Geändert
IRR
zuMIRR
und geändert5
zu a,,
so dass es 3 Parameter gibt.Ich habe dies gefunden, als ich nach der
IRR
Funktionsweise von Excel gesucht habe . Es gab einen Artikel: Wie die MIRR-Funktion von Excel die IRR-Funktion reparieren kann . Das hat mir einen Tipp gegeben. Ein kluger Versuch. Ich hatte noch nie zuvor VBA verwendet, das war also auch interessant.quelle
Matlab / Octave, Jonas
Beschreibung
Fügen Sie in der letzten Zeile hinzu, um
'
siearg'
in die Zeichenfolge umzuwandeln'arg'
, die dann als ASCII-Zahlen interpretiert wird. Fügen Sie'
am Ende eine weitere hinzu , um das Spaltenformat beizubehalten.Das
'
im Originalcode fast Unnötige war der Haupthinweis. Auch im Nachhinein sollte die Tatsache,arg
die separat (anstatt direkt innerhalb dersin
Zeile) definiert wurde, verdächtig ausgesehen haben.Code
quelle
bc, abligh
Nur die mathematischen Operatoren eingefügt. Es dauerte ungefähr 1 Minute, um zu lösen, als ich nachschaute, was bc war und welche mathematischen Operationen es hatte. Das erste, woran ich dachte, war Spaltung, aber es gab keine gemeinsamen Faktoren, die gut aussahen. Also habe ich mich sofort für Potenzierung und Modul entschieden. Für den Modul b / c der erwarteten Ausgabe waren mindestens 15 Stellen erforderlich. Danach habe ich zweimal geraten und es gefunden.
quelle
Lua, TreFox
Beschreibung
"_G" ist die globale Tabelle, wobei "_G.load" auf die globale Funktion "load" verweist. Das Konvertieren einer Funktion in einen String führt zur Rückgabe der Adresse der Funktion, die dann vom Längenoperator "#" in die Länge des Strings umgewandelt wird.
Code
Da dies hier mein erster Beitrag ist, kann ich die ursprüngliche Antwort nicht kommentieren.
quelle
0x321a40c6d0
, für eine endgültige Ausgabe von22
.load
, und ich wusste, dass ich mich_G
auf die globale Symboltabelle bezog ... Ich habe die beiden einfach nicht zusammengefügt.Python, rp.beltran
Beschreibung
Mir ist aufgefallen, dass die benötigten Buchstaben immer 2 vor einer Ziffer waren. Ändern der dritten,
\w
um\d
alle richtigen Buchstaben mit Ausnahme der Leerzeichen zu erhalten.\D
war die einzige\
Gruppe, die Buchstaben und Leerzeichen erlaubte.Code
w
->D
,w
->d
in der Regex.quelle
Pyth, Isaacg
Beschreibung
Der ursprüngliche Code führt Folgendes aus:
Schon seit 156490583352162063278528710879425690470022892627113539022649722 - 58.227.066 gibt 156490583352162063278528710879425690470022892627113538964422656 , die gleich 2 26 × 3 × 7 × 7477 × 381.524.422.711 × 17007550201751761 × 2288745700077000184147 kann der gewünschte Ausgang durch Ersatz erhalten werden ,
^3y21
mit etwas , das zu einem Divisor auswertet dieses Produkt und ist größer als 58.227.066 .Der
^
im Originalcode vorgeschlagene Wert legt nahe, dass wir ihn zur Berechnung einer Potenz von 2 verwenden könnten , der 3- Wert , mit dem wir einen passenden Divisor der Form 3 × 2 n berechnen könnten .Beide sind irreführend. Lösungen mit einem Levenshtein Abstand von 3 (
%CG^2 26
,%CG^y2 13
,%CG^4y13
) oder 4 (%CG.<3y13
) sind leicht zu finden, aber die Lösung auf Distanz 2 erfordert einen anderen Ansatz.Das Kleinbuchstaben (
G
) besteht aus 26 Buchstaben, sodass seine Potenzmenge (die Menge aller streng ansteigenden Folgen von Kleinbuchstaben) 2 26 Elemente enthält. Durch Ersetzeny2
durchyG
berechnen wir diese Potenzmenge.Wir können die Länge des Sets von abrufen Sie ersetzt
3
mitl
, die Blätter uns mit^lyG1
, dh 2 26 zur ersten Potenz erhoben.Code
Beachten Sie, dass dies nur auf einem Computer mit genügend verfügbarem Speicher funktioniert (ungefähr 6,43 GiB, laut
time
), sodass es nicht mit dem Online-Interpreter funktioniert.So können Sie die Ergebnisse über die Befehlszeile überprüfen:
quelle