To łamigłówka gliniarzy i rabusiów , wątek gliniarzy można znaleźć tutaj.
Twoim zadaniem będzie znalezienie anagramu dostarczonych programów w wątku gliniarzy, który wykonuje lewą stronę odwrotną.
Gdy złamiesz odpowiedź, opublikuj rozwiązanie jako odpowiedź poniżej i powiadom pierwotnego odbiorcę.
Zostaniesz oceniony na podstawie liczby programów, które pierwszy złamałeś.
permutations
source-layout
cops-and-robbers
Post Rock Garf Hunter
źródło
źródło
f=
kod na początku kodu, ponieważ nie jest potrzebny i nie jest częścią oryginalnej funkcjiPython 2, 225 bajtów lub lp
Chyba miałem szczęście po zgadywaniu losowych dzielników głównych przez cały dzień ...
(Domyślny limit miejsc 4,8 x duży to 4, ale w zeszłym roku udało mi się podnieść go do 10. Musiałem dostosować konfigurację FAAS z 16 niewolników do 6 (+3 mpi, 1 master). 20 m polyselect, 12h 50m przesiewanie, 2h 25 m linalg, 30 m kw. Całkowity koszt ~ 70 USD. Przynajmniej @orlp był wystarczająco miły, aby wybrać rozmiar do rozwiązania, ale nie robię tego ponownie! Dzięki @IlmariKaronen za ostatni krok, i tak żartuję z zgadywanie: P)
źródło
Python 2, 83 bajty lublp
Oryginalny:
Pęknięcie:
Wypróbuj online!
Pękanie RSA wykonane przez Wolfram Alpha . ;)
źródło
~p*~q
jest krótszy niż-~p*-~q
, ups.(p*q-2*(p+q))/4
część? :)p/2
iq/2
były zarówno nieparzystych liczb pierwszych, a kilka prób i błędów, aby znaleźć coś, co będzie działać, korzystając z dostępnych znaków.p
iq
(te prawdziwe w kodzie sąp-1
iq-1
do gry w golfa) takie, które(p-1)/2
są najważniejsze, więc mamyφ(φ(pq)) = ((p-1)/2-1)((q-1)/2-1)
. To pozwala nam obliczyć modularną odwrotność65537
modφ(pq)
(czego potrzebujemy dla RSA) przy użyciu tożsamości Eulera, dzięki czemu odpowiedź jest znacznie krótsza, ponieważ nie musimy implementować modularnej odwrotności logiki ani twardego kodu innej dużej stałej. Oprócz-~q*-~p
->~q*~p
znalazłeś dokładnie moją funkcję :)φ(φ(pq)) = 2((p-1)/2-1)((q-1)/2-1)
w bezpieczne liczby pierwszep
iq
, ponieważφ(4) = 2
. Aleλ(φ(pq)) = lcm(2, (p-1)/2-1, (q-1)/2-1)
jest co najwyżej((p-1)/2-1)((q-1)/2-1)/2
i każda wielokrotność tego, minus jeden, wystarczy dla wykładnika. :)Python 3, 80 bajtów, Wolfram
To było naprawdę trudne do złamania! Korzystam z biblioteki dwusiecznej , która jest zawarta w dystrybucji Python 3.
bisect
Funkcja przyjmuje posortowanej listy i element i zwraca po prawej stronie, gdzie indeks element może być wprowadzony do utrzymania porządku. Po prostu podajemy muq
listę kwadratów zaczynającą się od1
i elementq
.źródło
(h+1)
na-~h
. Potem zdałem sobie sprawę, że nie o to chodzi w tym wyzwaniu: P**
ma wyższy priorytet niż~
w Pythonie. Przypuszczam, że jest to lepsze niż w JS, gdzie-~2**2
generuje błąd składniowy („niepoznane wyrażenie jednoargumentowe nie może pojawić się po lewej stronie„ ** ””).**
operatora dodanego w ES2017)JavaScript, 21 bajtów, Arnauld
Oryginalny
Pęknięcie
Zwraca pierwiastek kostki.
źródło
7, 9 bajtów, ais523
Ponieważ brutalna siła zawsze wygrywa, a 9! jest tylko 362880
źródło
Processing.js, 59 bajtów, Kritixi Lithos
Oryginalny:
Pęknięcie:
Cóż, to było dość łatwe. Najtrudniejsze było ustalenie, gdzie umieścić dodatkowe przecinki i gwiazdki. Na szczęście wydaje się, że Przetwarzanie pozwala na dodatkowe nieużywane parametry funkcji, a także wyrażenia przecinków w stylu C.
źródło
JavaScript (ES6), 63 bajty, SLuck49
Oryginalny:
Pęknięcie:
Powyższy kod base64 dekoduje:
gdzie
...
oznacza grupę losowych śmieci, które są ignorowane przez interpreter JS, ponieważ są w komentarzu.Znalazłem to rozwiązanie metodą prób i błędów. W końcu, tak naprawdę tylko Najtrudniejsze były dwa znaki nowej linii na początku kodu, potrzebne do linii odpocząć prawidłowo i aby dostać
M
sięMath
do base64 zakodować do czegoś, co było dostępne w oryginalnym zestawie znaków. Najpierw wypróbowałem spacje, ale" M"
kodowałem base64"ICBN"
i potrzebowałem jedynej dostępnejB
do kodowania".po"
później w kodzie."0+M"
,"1*M"
,"1?M"
Lub innych podobnych prefiksy no-op mogłem pomyśleć nie działało, ale nowe linie zrobił.Podejrzewam, że nie może to być dokładnie zamierzone rozwiązanie, ale cokolwiek - to działa. :)
Próbny:
źródło
Brain-Flak, 26 bajtów, Kreator pszenicy
Oryginał (dodaje 13)
Crack (odejmuje 13)
źródło
J, 8 bajtów, mil
Prosta zamiana
+:
na-:
(podwójna na połowę).źródło
[:[+:]-:
.JavaScript, 15 bajtów, wstaw tutaj nazwę użytkownika
Oryginalny
Pęknięcie
źródło
Python 2, 47 bajtów, Kreator pszenicy
źródło
JavaScript (ES6), 46 bajtów, SLuck49
Oryginał (oblicza ln (x + 1))
Pęknięcie
Nigdy bym tego nie złamał, gdybym nie zdał sobie sprawy, że odwrotność jest
Math
wbudowana .(lg=19979699+55686).toString(9+25)
to po prostu zawiły sposób powrotu"expm1"
.źródło
expm1
i powiedziałem: „Czekaj, to jest coś?”J, 10 bajtów, mil
Muszę tu coś napisać, ponieważ odpowiedź jest za krótka.
źródło
J, 29 bajtów, Zgarb
Oryginalny
Pęknięcie
Wypróbuj online!
Kolejnym odpowiednikiem crack jest
Wyjaśnienie
źródło