Вдохновленный этим комментарием ...
Спасибо пользователям Step Hen , Wheat-Wizard и Dennis за помощь в разработке спецификации этого задания перед его публикацией!
Это нить грабителя! Для нити ментов, иди сюда
В этом задании перед вами стоит запуск некоторого кода, который делает его так, чтобы ваш язык больше не удовлетворял нашим критериям языка программирования. В этом вызове это означает сделать так, чтобы язык больше не мог ...
Возьмите числовой ввод и вывод
Добавьте два числа вместе
Проверьте, является ли определенное число простым или нет.
Это задача полицейских и грабителей , где есть две разные задачи с двумя разными целями: копы попытаются написать некоторый код, который делает язык в основном непригодным для использования, а грабители попытаются найти скрытый обходной путь, который позволяет копам восстановить свой язык.
Полицейские напишут два фрагмента кода:
Тот, который делает их язык в основном непригодным, например, удаляя встроенные функции для ввода / вывода и числовые операции. Этот код не может произойти сбой или выход. Должна быть возможность добавить код в конец этого фрагмента, и этот код будет оценен . А также
Фрагмент кода, который принимает два числа в качестве входных данных, складывает их вместе и выводит их сумму. Этот фрагмент должен работать правильно даже после запуска первого фрагмента. Когда два фрагмента объединены вместе, они должны сформировать полную программу, которая добавляет два числа, или определить функцию, которая добавляет два числа. Этот фрагмент, вероятно, будет опираться на неясное поведение, и его будет трудно найти.
Полицейские также выберут любой стандартный метод ввода и вывода . Однако они должны точно указывать, какой формат (входной и выходной) они используют. Чтобы вы могли взломать их ответ, вы должны следовать тому же формату ввода / вывода, иначе ваш взлом не будет учитываться.
Ответ ментов всегда откроет
Первый фрагмент (явно не второй).
Язык (включая минорную версию, так как большинство представлений, вероятно, будет опираться на странные крайние случаи)
Формат ввода-вывода, в том числе ли это функция или полная программа. Грабители должны использовать тот же формат, чтобы быть действительным взломом.
Любые странные крайние случаи, необходимые для их ответа на работу. Например, работает только на Linux или требует подключения к Интернету .
Как грабитель, вы должны посмотреть на одно из представлений полицейских и попытаться взломать его. Вы можете взломать его, написав любой допустимый фрагмент кода, который мог бы работать как фрагмент 2 (сложение двух чисел после того, как язык стал в основном непригодным для использования). Это не должен быть тот же фрагмент, который первоначально написал полицейский. После того, как у вас есть взломанный ответ, опубликуйте свой код как ответ в этой теме и опубликуйте ссылку на свой ответ в качестве комментария к ответу полицейского. Затем это сообщение будет отредактировано, чтобы указать, что оно взломано.
Вот пример. Для первого фрагмента вы можете увидеть следующую программу на Python 3 в качестве ответа полицейского:
Python 3
print=None
Принимает ввод из STDIN и вывод в STDOUT
Допустимый второй фрагмент может быть
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
Это верно, потому что он будет принимать два числа в качестве входных данных и выводить их сумму, даже если вы соедините два фрагмента вместе, например
print=None
import sys
a,b=int(input()),int(input())
sys.stdout.write(a+b)
Это действительный треск к их ответу.
Если ответ копа остается без изменений в течение целой недели, он может отредактировать свой второй фрагмент и указать, что его ответ теперь безопасен . После того, как он отредактирован, чтобы быть безопасным, вы можете больше не пытаться взломать его. Если они не редактируют это как безопасное, вы можете продолжать пытаться взломать его, пока они не сделают это.
Победителем темы грабителя является пользователь, взломавший наибольшее количество ответов, причем тай-брейк - это время, когда они достигли N трещин. (например, если два разных пользователя имеют по 5 крэков, например, пользователь, который первым разместил свой 5-й крэк, является победителем). По истечении достаточного времени я приму ответ победителя с наибольшим количеством голосов.
Повеселись!
Разъяснения правил
Первый фрагмент должен работать правильно, без каких-либо входных данных . Он может выводить все, что угодно, и этот вывод будет игнорироваться. Пока этот фрагмент готов, второй фрагмент работает правильно.
Второй фрагмент должен быть действительно выполнен, чтобы ваш ответ был действительным. Это означает, что ответ как
import sys sys.exit()
недопустимо, потому что это не нарушает язык. Это просто выходит.
После того, как вы в безопасности, ваш счет - это количество байтов обоих фрагментов .
Это восходит к Пожалуйста , выявить какие - либо странные случаи края , необходимые для ответа на работу ... Ваша заявка должна содержать достаточно информации , прежде чем раскрывается воспроизводимыми после раскрывается. Это означает, что если ваш ответ станет безопасным, а затем вы отредактируете в: Вот мой ответ. Да, кстати, это работает, только если вы запускаете его на Solaris, шутки над вами! Ваш ответ недействителен и будет удален и не будет признан приемлемым для победы.
Второй фрагмент может потерпеть крах после вывода суммы. Пока вывод по-прежнему правильный (например, если вы выберете вывод в STDERR, а затем получите кучу информации о сбое, это недопустимо)
Leaderboard
Вот список каждого пользователя, у которого есть хотя бы один треск, упорядоченный по счету, а затем по имени (в алфавитном порядке). Если вы отправите трещину, пожалуйста, обновите ваш счет соответственно.
#User #Score
Ilmari Karonen 8
Dennis 5
Olivier Grégoire 4
Sisyphus 3
Veedrac 3
Arnold Palmer 2
Bruce Forte 2
DJMcMayhem 2
Dom Hastings 2
ppperry 2
1bluston 1
2012rcampion 1
Ben 1
BlackCap 1
Christian Sievers 1
Cody Gray 1
HyperNeutrino 1
Joshua 1
Kaz 1
Mark 1
Mayube 1
Xnor 1
zbw 1
SecurityManager
который был в области видимости ... Вы также можете прочитать сSystem.in
этого момента, потому что он еще не закрыт.