Это нить полицейских. Нить грабителей здесь .
Ваша задача состоит в том, чтобы создать программу, которая будет работать вечно, не останавливая 1 , если только она не получает определенный ввод или ввод 2 . Если он получает этот вход, он должен завершиться за конечное время 3 . Это код-гольф , поэтому самый короткий ответ, который не был взломан грабителем в течение одной недели после публикации выигрышей. По прошествии недели отметьте свой ответ как безопасный и покажите вводимые данные (а > ! spoiler quote
). Если грабитель взломает ваше представление, отметьте его как взломанное и покажите ввод с задержкой (в a > ! spoiler quote
).
Материалы являются предпочтительными быть работоспособным и crackable на TIO . Материалы, которые нельзя запустить или взломать на TIO, разрешены, но, пожалуйста, включите инструкции для их загрузки / запуска.
Пожалуйста, сделайте ваши входные данные детерминированными и единообразными по всем прогонам. Смотрите эту мета-пост для деталей.
Пожалуйста, не «внедряйте RSA» или что-либо еще значащее для грабителей. Используйте непонятные языки и функции, не скучное шифрование и хеширование. Я не могу навязать это с помощью правил, но вы можете ожидать резких понижений, если все, что вы делаете, это sha(input) === "abcd1234"
.
1 Предполагая, что компьютер не выключается, не ломается, не поглощается солнцем, не перегревается при тепловой смерти вселенной и не истекает время ожидания TIO 60 с.
2 Программа должна остановиться хотя бы на одном входе. Пока он зацикливается на одном входе и останавливается на другом, он работает.
3 Это должно быть <60 секунд, чтобы код мог быть протестирован на TIO.
Ищете необработанные материалы?
fetch("https://api.stackexchange.com/2.2/questions/135363/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!i.body_markdown.toLowerCase().includes("cracked")).map(x=>{const matched = /^ ?##? ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>
источник
R
ошибки сразу же, даже не входя в функцию взломать. Я бы сказал, что это не считается завершением функции.Ответы:
Malbolge, 128 байт, взломанный KBRON111
Веселиться!
(Да, я выучил Мальболге только для этого. Да, потребовалось абсурдно много времени, чтобы наконец заработать. И да, оно того стоило.)
Завернут, так что вы можете увидеть его во всей полноте "славы"
Я использовал этот интерпретатор, чтобы проверить его; Я не уверен, имеет ли это значение, но я решил указать на всякий случай.
источник
6
и третьим является одним из четырех:!
,#
,/
и-
. Но комбинация, кажется, не останавливает ситуацию. Я выложил это здесь, возможно, кто-то умнее найдет решение. Если кто-то захочет, я опубликую завтра, как я получил эти входы. РЕДАКТИРОВАТЬ: Теперь, когда я думаю об этом, моя программа, которую я написал с целью обратного проектирования, это может иметь ошибку, и первый ввод может быть что-то еще, чем6
. Третий персонаж все еще стоит.JavaScript (ES6), 17 байт, взломан
На TIO, поскольку я не знаю, как сделать readline для Node.js на TIO, просто вставьте ввод в вызов функции. Это очевидно для любого, кто знает это, и не для любого, кто не знает.
Попробуйте онлайн!
Ответ:
источник
NaN == NaN
ложно во многих языках, кроме JavaScript. Я бы не назвал это «странной странностью».NaN != NaN
что это особенность чисел с плавающей запятой+
илиmax()
, но большинству людей все равно: P)JS (ES6), 67 байт ( треснувший )
Я думаю, что я не испортил, это может быть простое решение, которое я не видел.
Я ценю любые отзывы, это одно из моих первых сообщений
источник
x
иy
конечно, но я не буду редактировать, так как он был уже взломан. Может быть 38 байтовPython 3.4, (40 байт) взломан
источник
x==x
в переменной с именемto_be
, чтобы вы могли сделать ссылку Гамлета.Javascript (НЕ node.js)
Желаемое представление не использует бросок.
Подсказка для желаемой трещины:
Желаемая трещина:
источник
throw
(но все равно выдает ошибку)throw
, на этот раз я верю в реальность, потому что Грант Дэвис не работал для меня. Все ещеTypeError
с.x=>{try{for(;x+"h";)}catch(e){for(;;)}}
так, чтобы любые ошибки приводили к бесконечному циклу, поэтому пропущенные ошибки функции прототипа (или любые ошибки) приводят к бесконечному циклу.C (gcc) , 75 байт, треснувший
Попробуйте онлайн!
Я никогда не писал в полицейских-грабителей раньше. Надеюсь, это не слишком очевидно.
Решение:
источник
JavaScript (в браузере), 79 байт взломан
Вы должны запустить его в недавнем браузере (например, последняя версия Firefox ESR, последняя версия Firefox, последняя версия Chromium). Запуск в старых браузерах (например, Netscape 2, IE 4) не учитывается.
Примечание: остановлено браузером из-за тайм-аута, не считайте остановку здесь.
Всегда будьте осторожны, не ломайте свой браузер при тестировании этих кодов и счастливого ограбления ^ _ ^
источник
setTimeout
качестве параметра не работает.var key=(()=>{setTimeout(args);return null})()
а потомcrackme(key)
PHP (взломанный Висенте Галлур Валеро), 65 байт
Попробуйте онлайн!
Сложнее, чем может показаться. Отредактировано, чтобы быть возможным на TIO, за счет байтов. Принимает ввод через
$argv[1]
.источник
Шелуха , 5 байт, треснувший
Попробуйте онлайн!
Немного объяснения, так как этот язык все еще довольно новый:
←ø
получает первый элемент пустого списка: он возвращает значение, которое может принимать любой тип, будь то конкретный тип или функция, которая затем будет применена к входным данным.∞
создает бесконечный список, составленный из копий предыдущего результата (который в большинстве случаев будет означать список бесконечных нулей).↑ε
берет элементы из этого списка до тех пор, пока они «маленькие», т.е. их абсолютное значение равно ≤1; на бесконечном списке нулей это никогда не остановится.источник
Braingolf , 4 байта ( треснувший )
Попробуйте онлайн!
Suuuper легко, но
посмотрим, сколько времени это займетОтвет:
источник
Рубин , 31 байт ( взломано Эриком Думинилом )
Попробуйте онлайн!
Обратите внимание, что это должно быть выполнено в среде, в которой нет завершающего символа новой строки в результате
gets
, иначе невозможно остановить его (я думаю), поскольку что-либо, заканчивающееся символом новой строки, приведет к ошибке и попадет в режим спасения.источник
3.methods
возвращает5
и не выходит из цикла.5
чтобы думать, что правильный ответ будет включать в себя функцию, которую он выполнял ...Баш, 25 байт ( треснувший )
Вдохновленный Денисом. Попробуйте онлайн.
источник
Баш 4.2, 14 байт ( взломан )
Давайте попробуем это снова.
Это не работает на TIO, который использует Bash 4.3. Ввод осуществляется через аргументы командной строки.
В Linux и с установленным gcc Bash 4.2.53 можно загрузить и собрать следующим образом.
источник
Сетчатка , 78 байт ( взломана ) ( взломана с помощью предполагаемого решения )
Было довольно весело писать, надеюсь, что это весело, чтобы взломать
Попробуйте онлайн!
Трещины с помощью непреднамеренного решения и предполагаемого решения в течение минуты друг от друга. Один размещен первым, один прокомментирован первым.
Предполагаемое решение:
источник
Node.js, 23 байта ( взломан )
Решение Гранта Дэвиса
Мое решение
источник
Java 8, 99 байт, Cracked
Это лямбда типа
Consumer<String>
.Ungolfed:
Попробуйте онлайн! (обратите внимание, что тестовая программа будет аварийно завершать работу при пустом вводе, но сама лямбда не будет!) (также используйте «аргументы», а не «ввод» в TIO, поскольку тестовая программа использует аргументы, а не STDIN)
Предполагаемый ответ:
источник
Bash 4.2, 10 байт ( треснувший )
Это не работает на TIO, который использует Bash 4.3. Ввод осуществляется через аргументы командной строки.
В Linux и с установленным gcc Bash 4.2.53 можно загрузить и собрать следующим образом.
источник
Ява: 1760 ( треснувший )
Я чувствую, что это слишком плохо для игры в гольф, поэтому я просто запутал имена переменных и сделал их «грязными». На самом деле это настолько подло, что я собираюсь публиковать подсказки со временем, просто чтобы я мог видеть, что они взломаны.
Подсказка 1: это имеет теоретически бесконечные действительные входные данные, но есть один, который является наиболее «правильным»
Попробуйте онлайн!
источник
Braingolf , 18 байт Трещины
Попробуйте онлайн!
Liiiitle немного сложнее, чем предыдущий, я начну писать настоящий после этого
источник
i
не работает.£
). А почему не-1
работает? Это сложно.JavaScript (ES7), 41 байт ( взломан и взломан )
Редактировать: исправлено, чтобы предотвратить его падение при отсутствии ввода вообще (спасибо @totallyhuman за то, что заметил)
Возможно, существует несколько решений, но ожидаемое является относительно простым.
Предполагаемое решение:
источник
Bash + Utils (взломанный Деннисом), 74 байта
Я надеюсь, вам понравится tar, потому что это единственная утилита, которую вы можете использовать.
Попробуйте онлайн!
Преднамеренная трещина
источник
Mathematica,
3626 байт ( взломан )Очень короткий цикл,
#0[#;∞]
который будет продолжать работать снова и снова, пока не сломает ваше ядро ... (Это$IterationLimit
просто для того, чтобы вы навсегда застряли на большинстве входов).Попробуйте это на Wolfram Sandbox! - если вы застряли в бесконечном цикле, вы можете подождать до истечения времени ожидания или нажать квадратный значок «отменить оценку» слева от названия блокнота
(unnamed)
.ПРИМЕЧАНИЕ : эта функция меняет ваши
$IterationLimit
настройки.источник
JavaScript (Node.js), 18 байт ( взломан )
Попробуйте онлайн! Ответ:
источник
Symbol()
будет работать.C #, 118 байт ( треснувший )
Я не ожидаю, что это продлится слишком долго, но это более неловко, чем кажется.
источник
C, 140 байт ( треснувший )
Надеемся, что не так много, даже не близких к предполагаемым, входов, которые заставят его остановиться, но давайте посмотрим.
Попробуйте онлайн!
источник
JavaScript (ES7), 73 байта ( взломан !)
Нежелательные решения: грубая сила. Желаемая трещина включает в себя математику.
Обратите внимание, что существует много решений (4194304) по модулю.
источник
бред , 170 байт взломано!
Попробуйте онлайн!
источник
nul
в бред. Кстати, вы можете удалить два первых>
сохранения 2 байта.JavaScript ES6 (Node.js> = 6,0) , 326 байт (безопасно)
Гораздо проще, чем моя другая задача , я больше не пытаюсь запутать подход к решению, что сэкономило мне много байтов. На этот раз
process.kill()
не сработает.Попробуйте онлайн!
источник
Swift 3, 14 байт ( треснувший )
Чтобы решить эту проблему, поместите свой код до или после этого утверждения.
fatalError()
и т. Д., Прежде чем это не засчитывается.источник
ambiguous semantics
на меня.cQuents , 2 байта ( трещины 1 ) ( трещины 2 )
Обратите внимание, что это быстро достигнет предела выхода 128 КиБ на TIO, что приведет к его остановке, но при локальном запуске он будет зацикливаться вечно, за исключением входа, который его нарушает. Найти этот вход должно быть довольно легко. До тех пор, пока вы не сделаете,
:A
будете продолжать торчать свой треугольный язык на вас.Заметьте также, что это должно быть просто,
A
но я нарушил неявные режимы прошлой ночью. На старых версиях интерпретатораA
будет работать нормально.Трещины:
Попробуйте онлайн!
источник