Dies ist ein Cops-and-Robbers- Rätsel. Den Thread der Cops finden Sie hier.
Ihre Aufgabe wird es sein, ein Anagramm der bereitgestellten Programme in dem Thread der Polizei zu finden, der seine linke Umkehrung ausführt.
Sobald Sie eine Antwort geknackt haben, posten Sie die Lösung als Antwort unten und benachrichtigen Sie den ursprünglichen Antwortenden.
Sie werden nach der Anzahl der Programme gewertet, die Sie als Erste knacken.
permutations
source-layout
cops-and-robbers
Weizen-Assistent
quelle
quelle
f=
am Anfang Ihres Codes löschen, da es nicht benötigt wird und nicht Teil der ursprünglichen Funktion istPython 2, 225 Bytes, orlp
Ich schätze, ich hatte Glück, nachdem ich den ganzen Tag zufällige Primteiler erraten hatte ...
(Die Standardeinstellung für c4.8xlarge spot limit ist 4, aber ich habe es letztes Jahr geschafft, 10 zu erreichen. Ich musste die FAAS-Konfiguration von 16 Slaves auf 6 anpassen (+3 MPI, 1 Master). 20m Polyselect, 12h 50m Sieben, 2h 25m linalg, 30m sqrt. Gesamtkosten ~ 70 $. Zumindest @orlp war nett genug, um eine lösbare Größe auszuwählen, aber ich mache das nicht noch einmal! Danke an @IlmariKaronen für den letzten Schritt, und ja, ich mache Witze über die Vermutung: P)
quelle
Python 2, 83 Bytes, orlp
Original:
Riss:
Probieren Sie es online!
RSA-Cracking von Wolfram Alpha . ;)
quelle
~p*~q
ist gerade-~p*-~q
aufgefallen , dass es kürzer ist als , oops.(p*q-2*(p+q))/4
Teil jedoch zurückentwickelt? :)p/2
undq/2
beides ungerade Primzahlen waren, und eine Reihe von Versuchen und Irrtümern, um etwas zu finden, das mit den verfügbaren Zeichen funktionieren würde.p
undq
(die wirklichen, die im Code sindp-1
undq-1
für Golfzwecke) so gewählt, dass(p-1)/2
es das Beste ist, was wir habenφ(φ(pq)) = ((p-1)/2-1)((q-1)/2-1)
. Dies ermöglicht es uns, die modulare Inverse von65537
modφ(pq)
(was wir für RSA benötigen) unter Verwendung der Euler-Identität zu berechnen , was die Antwort sehr viel kürzer macht, da wir keine modulare inverse Logik oder einen Hardcode für eine andere große Konstante implementieren müssen. Abgesehen von-~q*-~p
->~q*~p
hast du genau meine Funktion gefunden :)φ(φ(pq)) = 2((p-1)/2-1)((q-1)/2-1)
für sichere Primzahlenp
undq
, weilφ(4) = 2
. Istλ(φ(pq)) = lcm(2, (p-1)/2-1, (q-1)/2-1)
aber höchstens((p-1)/2-1)((q-1)/2-1)/2
, und ein Vielfaches davon, minus eins, ist für den Exponenten ausreichend. :)Python 3, 80 Bytes, Wolfram
Das war wirklich schwer zu knacken! Ich verwende die Halbierungsbibliothek , die in der Python 3-Distribution enthalten ist. Die
bisect
Funktion verwendet eine sortierte Liste und ein Element und gibt den Index ganz rechts zurück, in den das Element eingefügt werden kann, um die Reihenfolge beizubehalten. Wir geben ihm nur die Längenlisteq
der Quadrate ab1
und das Elementq
.quelle
(h+1)
zu-~h
. Dann wurde mir klar, dass das nicht der**
eine höhere Priorität hat als~
in. Ich nehme an, das ist besser als in JS, wo-~2**2
ein Syntaxfehler auftritt ("unparenthesierter unärer Ausdruck kann nicht auf der linken Seite von '**' stehen").**
eindeutig wie möglich sind (einschließlich des in ES2017 hinzugefügten Operators)Javascript, 21 Bytes, Arnauld
Original
Riss
Gibt die Kubikwurzel zurück.
quelle
7, 9 Bytes, ais523
Weil rohe Gewalt immer gewinnt und 9! ist nur 362880
quelle
Processing.js, 59 Bytes, Kritixi Lithos
Original:
Riss:
Das war einfach genug. Das Schwierigste war, herauszufinden, wo die zusätzlichen Kommas und Sternchen angebracht werden sollten. Glücklicherweise scheint die Verarbeitung zusätzliche unbenutzte Funktionsparameter sowie C-Komma-Ausdrücke zuzulassen.
quelle
JavaScript (ES6), 63 Byte, SLuck49
Original:
Riss:
Der obige base64-Code dekodiert:
bei dem die
...
steht das für eine Menge zufälligen Mülls, der vom JS-Interpreter ignoriert wird, da er in einem Kommentar steht.Ich habe diese Lösung durch Ausprobieren gefunden. Am Ende waren die beiden Zeilenumbrüche am Anfang des Codes der einzige wirklich knifflige Teil, der benötigt wurde, um den Rest korrekt auszurichten und die Base64-Kodierung in etwas umzuwandeln, das
M
imMath
ursprünglichen Zeichensatz verfügbar war. Ich habe zuerst Leerzeichen ausprobiert, aber" M"
base64-encodes into"ICBN"
und ich brauchte das einzig verfügbareB
, um".po"
später im Code zu encodieren ."0+M"
,"1*M"
,"1?M"
Oder andere ähnliche no-op - Präfixe ich habe auch nicht denken konnte arbeiten, aber Zeilenumbrüche tat.Ich vermute, das ist vielleicht nicht genau die beabsichtigte Lösung, aber was auch immer - es funktioniert. :)
Demo:
quelle
Brain-Flak, 26 Bytes, Weizen-Zauberer
Original (fügt 13 hinzu)
Riss (subtrahiert 13)
quelle
J, 8 Bytes, Meilen
Einfaches Austauschen von
+:
for-:
(double für halfve).quelle
[:[+:]-:
.Javascript, 15 bytes, insertusernamehere
Original
Crack
quelle
Python 2, 47 bytes, Wheat Wizard
quelle
JavaScript (ES6), 46 bytes, SLuck49
Original (calculates ln(x+1))
Crack
I never would have cracked this if I hadn't realized that the inverse is a
Math
built-in.(lg=19979699+55686).toString(9+25)
is just a convoluted way of returning"expm1"
.quelle
expm1
, and said "Wait, that's a thing?"J, 10 bytes, miles
I have to write something here because the answer is too short.
quelle
J, 29 bytes, Zgarb
Original
Crack
Try it online!
Another crack equivalent is
Explanation
quelle