Это головоломка для полицейских и грабителей , ее можно найти здесь.
Ваша задача будет найти анаграмму предоставленных программ в потоке полицейских, который выполняет обратное слева.
После того, как вы ответите на вопрос, опубликуйте решение как ответ ниже и сообщите об этом оригинальному ответчику.
Вы будете оцениваться по количеству программ, которые вы взломали первыми.
permutations
source-layout
cops-and-robbers
Пост Рок Гарф Хантер
источник
источник
f=
код в начале вашего кода, поскольку он не нужен и не является частью исходной функцииPython 2, 225 байт, orlp
Думаю, мне повезло после угадывания случайных простых делителей весь день ...
(Максимальный спот c4.8xlarge по умолчанию равен 4, но мне удалось увеличить его до 10 в прошлом году. Пришлось настраивать конфигурацию FAAS с 16 подчиненных до 6, хотя (+3 mpi, 1 master). Полиселект 20m, 12h просеивание 50m, 2h 25 миллионов фунтов, 30 миллионов квадратных метров. Общая стоимость ~ 70 долларов. По крайней мере, @orlp был достаточно хорош, чтобы выбрать решаемый размер, но я не буду делать это снова! Спасибо @IlmariKaronen за последний шаг, и да, я шучу о отгадывая: P)
источник
Python 2, 83 байта, orlp
Оригинал:
Crack:
Попробуйте онлайн!
Взлом RSA сделан Wolfram Alpha . ;)
источник
~p*~q
что прямо короче-~p*-~q
, ой.(p*q-2*(p+q))/4
части хотя? :)p/2
иq/2
были странными простыми числами, и куча проб и ошибок, чтобы найти что-то, что будет работать с использованием доступных символов.p
иq
(настоящие, те, что в коде,p-1
иq-1
для целей игры в гольф) так, чтобы они были(p-1)/2
первостепеннымиφ(φ(pq)) = ((p-1)/2-1)((q-1)/2-1)
. Это позволяет нам вычислять модульную инверсию65537
модаφ(pq)
(что нам нужно для RSA), используя идентичность Эйлера, делая ответ намного короче, потому что нам не нужно реализовывать модульную обратную логику или жестко кодировать другую большую константу. Помимо-~q*-~p
->~q*~p
, вы нашли именно мою функцию :)φ(φ(pq)) = 2((p-1)/2-1)((q-1)/2-1)
для безопасных простых чисел,p
иq
, потому чтоφ(4) = 2
. Ноλ(φ(pq)) = lcm(2, (p-1)/2-1, (q-1)/2-1)
самое большее((p-1)/2-1)((q-1)/2-1)/2
, и любое кратное из этого, минус один, подойдет для показателя степени. :)Питон 3, 80 байт, Вольфрам
Это было действительно трудно взломать! Я использую библиотеку bisect , которая включена в дистрибутив Python 3.
bisect
Функция принимает отсортированный список и элемент, и возвращает крайний правый индекс , где элемент может быть вставлен для поддержания порядка. Мы просто даем емуq
список длин квадратов, начиная с1
элементаq
.источник
(h+1)
на-~h
. Тогда я понял, что не в этом суть проблемы: P**
имеет более высокий приоритет, чем~
в Python. Я полагаю, что это лучше, чем в JS, где-~2**2
выдается синтаксическая ошибка («не заключенное в скобки унарное выражение не может появляться в левой части« ** »»).**
оператора, добавленного в ES2017)Javascript, 21 байт, Арно
оригинал
трещина
Возвращает корень куба.
источник
7, 9 байт, ais523
Потому что грубая сила всегда побеждает и 9! только 362880
источник
Processing.js, 59 байт, Kritixi Lithos
Оригинал:
Crack:
Ну, это было достаточно просто. Самым сложным было выяснить, куда вставлять лишние запятые и звездочки. К счастью, кажется, что Processing допускает дополнительные неиспользуемые параметры функции, а также запятые в стиле C.
источник
JavaScript (ES6), 63 байта, SLuck49
Оригинал:
Crack:
Код base64 выше декодирует в:
где
...
обозначает кучу случайного мусора, который игнорируется интерпретатором JS, поскольку он находится в комментарии.Я нашел это решение методом проб и ошибок. В конце концов, только на самом деле сложная часть были две новых строк в начале кода, нужно сделать остальное линии правильно и получить
M
вMath
к base64-кодированию в то , что было доступно в исходном наборе символов. Сначала я пробовал пробелы, но" M"
base64-кодирует в,"ICBN"
и мне нужно было единственное доступноеB
для кодирования".po"
позже в коде."0+M"
,"1*M"
,"1?M"
Или любые другие подобные не-оп префиксы я мог думать не получились, но переводы строки сделали.Я подозреваю, что это может быть не совсем намеченным решением, но как бы то ни было - оно работает. :)
Демо-версия:
источник
Brain-Flak, 26 байтов, Пшеничный Волшебник
Оригинал (добавляет 13)
Трещина (вычитает 13)
источник
J, 8 байт, миль
Простая замена
+:
для-:
(двойной на половину).источник
[:[+:]-:
.Javascript, 15 байт, имя пользователя здесь
оригинал
трещина
источник
Python 2, 47 байт, мастер пшеницы
источник
JavaScript (ES6), 46 байт, SLuck49
Оригинал (рассчитывает ln (x + 1))
трещина
Я бы никогда не взломал это, если бы не понял, что обратное - это
Math
встроенное .(lg=19979699+55686).toString(9+25)
это просто запутанный способ возвращения"expm1"
.источник
expm1
и сказал: «Подождите, это что-то?»J, 10 байт, миль
Я должен написать что-то здесь, потому что ответ слишком короткий.
источник
J, 29 байт, Zgarb
оригинал
трещина
Попробуйте онлайн!
Еще один трещинный эквивалент
объяснение
источник