Это нить грабителей. Нить полицейских здесь .
Ваша задача состоит в том, чтобы взломать представление полицейского, найдя вход, который заставляет его остановиться. Вам не нужно выяснять, почему, или все входы, которые делают его остановленным, если их больше одного, или вход, предназначенный копом, подойдет только один вход.
После того, как вы взломали представление, опубликуйте ссылку на него в комментарии или отредактируйте сообщение полицейского. Вы также можете пометить ваше представление для мода, чтобы отредактировать его в посте полицейского. Кроме того, опубликуйте использованный ввод и ссылку на пост полицейского в ответе в этой теме. Грабитель, который взламывает большинство представлений, побеждает.
Несколько человек могут публиковать крэки в одной и той же копе, если они разные.
(Если SE преобразовал ваш дублированный ответ в комментарий, вы можете проголосовать по этому запросу )
Ищете необработанные материалы?
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.innerText = 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>
источник
Ответы:
Мальболге, дверная ручка
Попробуйте онлайн (спасибо Деннис !)
Вход для Windows:
F_⌠1234567890
Вход в систему на основе Linux с использованием ISO-8559-1:
F_ô1234567890
Суть того, как работала программа Malbolge, заключается в том, что она зависела от поведения интерпретатора Malbolge, который вызывает бесконечный цикл, если он встречает какую-либо инструкцию, которая не находится между 33 и 126. Программа была сконструирована так, что ваш ввод позволит вам изменять единственная инструкция.
Я изменил интерпретатор, чтобы вывести состояние памяти программы в начале выполнения, а также создать «нормализованный» исходный код, который принимает форму списка кодов операций, которые будут выполняться во время выполнения программы. С помощью этой информации вы можете (медленно) определить, что, хотя программа потребовала 13 входов, только 1-й и 3-й входы действительно имели значение.
Просматривая нормализованный код и дамп памяти (и немного помощи отладчика), я разработал следующее:
Где
op
находится так называемый «триумфальный» «оп», который описан в спецификации. Используя эту информацию, вы можете написать простую программу, которая перебирает возможные входные данные (от 0 до 255) и находит все решения, которые соответствуют вышеуказанным критериям. Я нашел 2219 возможных решений, некоторые из которых, вероятно, не будут работать (вы не можете ввести необходимые символы). В частности, вышеупомянутые входные данные основаны на решении:(Input 1 = 70, Input 3 = 244)
источник
F_ô
как кстати.JavaScript (в браузере)
Это ложно, на удивление
Редактировать: почему
document.all
ложь ?источник
JS (ES6), Хуан Тонина
Потребовалось немного заглянуть,
Object.is
чтобы найти. В основном,+0 === -0
поскольку===
проверяет их как числа, и0
конечно, ноObject.is
видит+0
и-0
как разные объекты. Очень умный полицейский :)Попробуйте онлайн!
источник
Питон, Сифор
Мы просто переопределяем равенство, чтобы вести себя точно так, как требуется для завершения программы.
источник
__eq__
дляraise
...0
: рclass A:__eq__=lambda s,o:0
иf(A())
делает свою работу.Braingolf
Любое число меньше, чем
0
работает.Попробуйте онлайн!
источник
PHP, Сизиф
(-0[0)> deal with it=1
Функция parse_str изменяет пробелы и другие символы на подчеркивания. Если вы поместите [используемый для разделителя массива без закрытия, он изменит его на подчеркивание, но не будет переводить следующие пробелы (я не знаю почему).
Попробуйте онлайн!
источник
JavaScript (Node.js), Аднан
[]
и[]
похоже на работу. Я перепробовал кучу из них в том числеnull
,undefined
,NaN
...[] >= [] && [] <= [] && [] != []
оценивает как истинное.Мораль истории: JavaScript странный .
Попробуйте онлайн!
источник
JavaScript (ES7), Арнаулд
стандарт
"8e7"
это решениемотыга
Не нужно рассчитывать это число, мы можем переопределить
length
свойствоЭто наборы
~x/x.length**3!=-2962963
дляfalse
Приоритет операторов
~
поразрядно не первый** exponentiation
второй/ division
третийисточник
Баш, Ведрак
Попробуйте онлайн!
Из
ld.so(8)
справочной страницы:источник
/bin/yes
, Но это возможно, и в этом случае этот env var будет проигнорирован.Mathematica, Юнг Хван Мин
Понятия не имею, является ли это предполагаемым решением, но оно передает выражение, которое не оценивается, пока не будет указано как
#
внутри функции, что приведет к немедленному возвращению из функции без какой-либо дальнейшей оценки. Вы можете видеть, что функция на самом деле вызывается (вместо того, чтобы просто генерировать исключение, прежде чем даже вызывать функцию), изменив функцию на:Который действительно напечатает,
stop
прежде чем выдать ошибку.источник
Unevaluated[Abort[]]
, но то же самое.)Retina , PunPun1000
Попробуйте онлайн!
Любой вход с n
1
s, где сумма делителей n + 1 равна n + 1, должен работать.источник
Рубин
без перевода строки.
3.send('exit')
конечно, не равно5
, но он выполняетKernel#exit
:Можно позвонить
exit
на3
потому , что :abort
также работает:источник
JavaScript (Node.js) , программист 5000
Уже взломан, но мой немного отличается :) Не хватает представителя, чтобы комментировать в полицейских. Также не стесняйтесь редактировать, чтобы исправить форматирование, мой первый пост здесь.
В основном я устанавливаю
__proto__
равным функцию, которая бросает. Взятый от просмотра страницы Mozilla для прото. (Извините, низкая репутация, не могу опубликовать ссылку.)Попробуйте онлайн!
РЕДАКТИРОВАТЬ: Есть некоторые повторения, так что вот ссылка: Mozilla
__proto__
источник
Баш, Сизиф
К счастью,
kill
это встроенная оболочка.Попробуйте онлайн!
источник
R, Ярко Дуббельдам
В первый раз вносите что-либо, так что называйте любые ошибки, которые я допустил в формате.
Уверен, это верно. Просто перемотка is.list (), верно?
источник
Javascript, программист 5000
Максимальная длина строки
Использует строку длиной на единицу меньше, чем поддерживает ваш движок. При добавлении
"h"
в эту строку выдается ошибка. Попробуйте онлайн!Блок перекрестного происхождения
Сильно вдохновлен ответом от @ jadkik94 , но работает везде. Создает перекрестный iframe, затем передает
.contentWindow
указанный iframe. Это терпит неудачу, когда функция пытается использовать значение из-за безопасности перекрестного источника.Примитивная ценность
Вариант
.toString()
ответов - это просто используетtoPrimitive
вместо этого. Он возвращает объект в качестве примитивного значения, которое Javascript не знает, как обрабатывать (поэтому выдает ошибку). Попробуйте онлайн!источник
Node.js, Аднан
{}
и{}
или любые 2 объекта являются двумя входами. Я даже не понимаю, как это работает.Вот удивительная логика сравнения объектов JS:
источник
JavaScript (Вавилонский узел) , Конор О'Брайен
(Репост, случайно положил в полицию.) Не уверен, что предполагалось, но положительные десятичные числа, которые не являются огромными, похоже, работают.
Также я думаю, что я все еще не могу комментировать в Cops.
Попробуйте онлайн!
источник
JavaScript (НЕ node.js) , программист 5000
Это не может быть добавлено, потому что это создает объект, у которого нет toString, потому что новый
Set
не присущ прототипы из fromObject
.вход:
Попробуйте онлайн!
источник
Баш 4.2, Денис
Понятно, что не предполагаемое решение, потому что оно работает и на более новом bash.
Попробуйте онлайн.
источник
Октава , Стьюи Гриффин
Входные данные:
exit
input
Обоснование : оценивает все, что вводится.exit
выходит из программы.Попробуйте онлайн!
источник
Python 2, Foon
То, что написано на банке, в основном.
Попробуйте онлайн.
источник
Python 3 (CPython), Veedrac
Попробуйте онлайн!
источник
Питон 3, Сифор
Это было весело Нам нужно
type(x) != str
пройти проверку, поэтому нам нужно контролировать возвращаемое значениеtype()
. Мы должны переопределить__class__
атрибут и заменить его настраиваемым объектом, который расширяетсяtype
,__ne__
метод которого заменяется на метод, который всегда возвращает false. Это заставляет его пройти проверку типа, но поиск не удастся, потому чтоo
это не str.источник
C #, TheLethalCoder
Или любой другой обнуляемый класс.
источник
Сетчатка
Новая строка, сопровождаемая
1
работами. Я нашел это сразу.Попробуйте онлайн
источник
JS (ES6)
Любой символ с кодом меньше 10 должен работать; Я использовал
tab
символ выше, который SE преобразует в пробелы.источник
f(<tab>)
правильный синтаксис (пустой ввод), и мы должны были бы различатьf(1)
и вf("1")
любом случаеJavaScript (ES6), программист 5000
Попробуйте онлайн!
Состояние было
!x||x>="\n"
. Любой отдельный символ в таблице ASCII с кодом меньше, чем\n
будет работать.источник
cQuents, Step Hen
Все, что следует за пробелом и положительным целым числом. Пробел разделяет входные данные, а дополнительный входной номер становится номером терма для вывода.
Попробуйте онлайн!
источник
a 1
! Вы ниндзя меня: /MATL , Луис Мендо (не предполагаемое решение)
Пустой ввод останавливает программу и выдает следующую ошибку:
Попробуйте онлайн!
источник