В этом задании «полицейские и грабители» полицейские будут думать о целых положительных числах. Затем они напишут программу или функцию, которая выводит одно значение, когда предоставляется число в качестве ввода, и другое значение для всех других положительных целочисленных входов. Копы покажут программу в ответе, сохраняя номер в секрете. Грабители могут взломать ответ, найдя номер.
Вот подвох: это не код-гольф , вместо этого ваш счет будет секретным числом, а более низкий показатель будет лучше. Очевидно, вы не можете раскрыть свой счет, пока грабители все еще пытаются его найти. Ответ, который не был взломан через неделю после публикации, может иметь оценку и быть отмеченным как безопасный. Безопасные ответы не могут быть взломаны.
Это, вероятно, само собой разумеется, но вы должны быть в состоянии оценить свой ответ. То есть вы должны точно знать, какое значение принимает ваша машина принятия решений. Недостаточно просто знать, что он есть.
Использование криптографических функций
В отличие от большинства задач полиции и грабителей, которые просят вас не использовать криптографические функции, эта задача не только полностью разрешает их, но и поощряет их. Вы можете создавать ответы любым способом, пока вы пытаетесь победить. При этом ответы с использованием других методов также приветствуются здесь. Цель этого задания - победить, и пока вы не обманываете, ничего не остается в стороне.
источник
A(9,9)
гдеA
находится функция Аккермана.Ответы:
Тампио , Трещины
Бежать с:
Инструкции по установке переводчика приведены на странице Github. Пожалуйста, сообщите, если у вас есть какие-либо трудности с этим.
источник
Perl 6 - треснул!
В строгом смысле, это неприемлемое представление, потому что не очень старается выиграть. Вместо этого он надеется предложить приятную головоломку.
Это «чистая математическая» программа, которая предназначена для взлома созерцанием. Я уверен, что вы могли бы перебить решение (после того, как я очистил некоторые неаккуратные программы, которые я намеренно совершил), но для «полного доверия» (: -)) вы должны быть в состоянии объяснить, что он делает на математических основаниях. ,
Вы должны взломать функцию f (). (Это функция, которая принимает одно натуральное число и возвращает один из двух результатов.) Предупреждение. Как показывает @Nitrodon, программа на самом деле ведет себя неправильно и «принимает» бесконечное количество входных данных. Поскольку я понятия не имею, как это исправить, я просто отмечаю для будущих решателей, что число, которое я имел в виду, составляет менее 70000 .
Если вы попытаетесь запустить это в TIO, это будет тайм - аут. Это намеренно. (Так как он вообще не должен запускаться!)
Наконец, я попытался написать довольно понятный код. В большинстве случаев вы должны свободно читать его, даже если вы не знакомы с языком. Только два замечания: квадратные скобки [ op ] означают сокращение («сворачивание», в языке Haskell) списка с оператором op ; и вызываемая подпрограмма
postfix:<!>
фактически определяет постфиксный оператор с именем! (т.е. используется как5!
- он делает именно то, что вы ожидаете). Аналогично дляprefix:<∫>
одного.Я надеюсь, что кому-то понравится этот, но я не уверен, правильно ли я понял проблему. Не стесняйтесь избивать меня в комментариях :—).
Попробуйте онлайн!
источник
JavaScript, Cracked
Я настолько запутал это, насколько смог, до такой степени, что это не вписывается в этот ответ.
Попробуй это здесь! Нажмите Run, затем введите в консоли
guess(n)
Возвращает неопределенное значение, если вы получили неправильный ответ, в противном случае возвращает true.
Редактировать: Каким-то образом я упустил из виду, что мой счет - это число. Ну что ж, мой номер очень, очень большой. В любом случае, удачи в решении.
источник
Желе , оценка: ... 1 ( трещины )
Попробуйте онлайн!
+1 Действительно ожидал, что я раскрою это? Давай! О, хорошо, у этого есть счет 134. Там, я сказал это!
источник
Ç€G
и диапазон в1...1000
качестве входных данных: P5ȷ2_
часть правильно?1
находится, затем я вставил строку с начала и до1
сценария Python и посчитал количество нулей перед ним ...Python 2 (взломан)
Я бы не предложил грубую силу. Надеюсь, вы любите генераторы!
Попробуйте онлайн!
Выходы
1
для правильного номера, в0
противном случае.источник
a
должно бытьi+a
. Я исправил это, но он все равно треснул,Хаскелл , треснувший
Это чисто на основе арифметики. Обратите внимание, что
myfun
это фактическая функция, аh
просто вспомогательная функция.Попробуйте онлайн!
источник
Ява, взломанная нитродоном
Я хотел попробовать что-то отличное от обычных хеш-функций и случайных функций. Вы можете передать число в качестве аргумента командной строки. Выводится,
1
если задано правильное число и0
иначе. Для небольших номеров вы также можете попробовать это онлайн .Подсказка:
Объяснение:
источник
Пиф, взломанный Эриком Искателем *
Я пытался запутать это как можно больше.
Попробуй это здесь!
источник
Октава, оценка: ???
В значительной степени гарантируется, что ни одно другое число не будет иметь одинаковых 20 случайных чисел в конце списка
1e8
чисел.Выходы
1
для секретного номера, в0
противном случае.Я запустил это в октаве 4.2.0.
«Сны и другие замедления могут быть устранены при брутфорсе».
Удачи с этим :)
источник
Ли , оценка 239, трещины
Попробуйте онлайн!
Я рассчитываю на то, что никто не знает Ли здесь, хотя я знаю, как легко это может измениться ... пот
Объяснение:
источник
Brain-Flak , оценка 1574 ( взломан )
Попробуйте онлайн!
источник
Округ Колумбия
Попробуйте онлайн!
Примечание. Это представление было изменено с момента его отправки. Первоначальное представление (ниже) было недействительным и взломано Sleafar в комментариях ниже. (Ввод
1
дает результатyes
, но есть еще одно число, которое дает тот же результат.)Попробуйте онлайн!
источник
Рубин , сейф, оценка:
Попробуйте онлайн!
Объяснение:
источник
PHP, безопасно, оценка:
Выходы 1, если правильно, 0 в противном случае.
Редактировать: я не думаю, что кто-то даже пытался взломать это, потому что:
Объяснение:
источник
Swift 3 (53 байта) - треснувший
Как запустить это? -
f(n:1)
.Тест здесь.
источник
Python 3, оценка: ???
Надеюсь, это, во всяком случае, демонстрирует, насколько эта проблема действительно нарушена:
По сути, этот код лениво генерирует каждую возможную строку до тех пор, пока одна из строк не получит хеш, который точно соответствует
hash_code
приведенному выше. Нехэшированный код принимает базовую форму:За исключением того,
<insert number here>
что заменяется на число, и в коде есть комментарии с целью сделать код почти неузнаваемым.Я принял все меры предосторожности, чтобы не получить пользу от этого поста. Для начала, это вики сообщества, поэтому я не буду получать за это репутацию. Кроме того, мой счет довольно большой, поэтому, надеюсь, придет гораздо более креативный ответ и победит.
Надеюсь, вы все не слишком взбешены моим ответом, я просто хотел показать, почему посты полицейских и грабителей обычно запрещают алгоритмы хеширования.
источник
256 ^ 100
или2 ^ 800
строки. Между тем2 ^ 512
возможны только 512-битные хэши. Это означает, что количество строк, которые вы перебираете, превышает число возможных хэшей, по крайней мере,2 ^ 288
до одного - в 10000 раз больше, чем число атомов во вселенной. Вероятность того, что этот конкретный хеш не будет использован, невероятно мала .Python 3 , 49 байт, взломан sonar235
Попробуйте онлайн!
источник
Java, оценка: 3141592 ( Cracked )
источник
Python 3, оценка 1 (безопасно)
Не очень интересное решение, но лучше безопасный полицейский, чем мертвый полицейский.
Выходы
1
для целевого номера, в0
противном случае. Ввод взят из стандартного ввода. Последняя часть (and int(original.decode())<1000
) существует только для обеспечения только одного ответа, иначе, очевидно, будет бесконечно много ответов.источник
100000000
.C (gcc) , оценка ???
Так как криптографические решения приветствуются, здесь. Ровно одно положительное целое будет что-то печатать , все остальные ничего не будут печатать. Это занимает много времени, поэтому его нельзя протестировать в Интернете.
источник
Ява, 164517378918, сейф
источник
TI-BASIC,
оценка: 196164532не конкурируетВозвращает 1 для секретного номера, 0 в противном случае.
Обратитесь к примечанию на этой странице о
rand
команде для получения дополнительной информации.источник
Python 3 , оценка:?
Попробуйте онлайн!
Просто, но может потребоваться некоторое время для грубой силы ;-) С нетерпением ждем быстрого взлома ;-)
Сноска: первые два и последние условия делают ответ уникальным.
Кстати, как рассчитывается счет?
Подсказка 1
источник
Ацето , безопасный
Выводит TrueFalse, если правильно, FalseFalse в противном случае
Номер был
Попробуйте онлайн!
источник
C #, Mono, Linux, Alpha, оценка 1 (безопасно)
Осторожный. Я серьезно. Там много альфа-симуляторов. Используйте один с джиттером или это не закончится.
Это зависит от того факта, что Alpha является байтовым порядком байтов, в результате чего System.BitConverter делает неправильные действия, если кто-то пытается это сделать на x86 или x64. Я написал этот ответ, чтобы продемонстрировать серьезность проблемы больше, чем что-либо еще.
источник