Это часть задачи полицейских и грабителей . Иди сюда для части полицейских.
Вызов грабителей
Ответ полицейского можно взломать, удалив любое подмножество символов из программы Haystack, чтобы он выводил Needle
вместо Haystack
(при этом оставаясь допустимым представлением на том же языке). Вам не нужно находить точно такое же решение, как и предполагал полицейский, если ваше решение действует с учетом вышеуказанных ограничений.
Если вам это удастся, опубликуйте ответ с решением, со ссылкой на ответ полицейского, и оставьте комментарий к ответу полицейского со ссылкой на ваш.
Грабитель, который взламывает больше всего ответов, побеждает. Связи разбиваются по сумме размеров ответов взломанного полицейского (в пользу грабителя, который взламывает более длинные представления).
Каждый ответ полицейского может быть взломан только один раз, и, конечно, вы не можете взломать свой собственный ответ. Если ответ полицейского оказывается недействительным до или после взлома, он не засчитывается в счет грабителя.
Примеры
Вот несколько простых примеров на разных языках:
Ruby
Haystack: puts 1>0?"Haystack":"Needle"
Delete: XXXXXXXXXXXXXXX
Needle: puts "Needle"
Python 2
Haystack: print "kcatsyaHeldeeN"[-7::-1]
Delete: XXXXXXXX XX
Needle: print "eldeeN"[::-1]
Обратите внимание, что подмножество удаленных символов не обязательно должно быть смежным.
источник
hashing, encryption or random number generation
Разрешено ли использование грабителями ? (Хотя вероятность крошечная)Ответы:
JavaScript, 85 байт (ES6)
Трещины ответ Arnauld в
"Needle" демо
Показать фрагмент кода
объяснение
Первоначальная функция была:
который более читабелен как:
Обратите внимание, что когда
n=21625674
, тоn.toString(35)
есть'eedle'
.35 во входных данных, вероятно, нельзя изменить на подмножество (потому что мы хотим, чтобы база была достаточно большой, чтобы содержать все буквы «del», поэтому нам нужна база, которая по крайней мере 22). Таким образом , число , чтобы изменить это
74837258394056219
,268435455
и124038877
. Мы хотим заменить их числами a, b, c, каждое из которых образовано подмножеством цифр исходных чисел, так что функцияg(k) = (k * a & b)
, начиная сk=35
итераций 35 раз, а затем XORed с c, дает21625674
.Для этого, после того, как думать немного, так как длина мала (максимальные
a
имеют длину 17,b
иc
имеет длину 9), я использовал только грубую силу :-) Написал на C ++ программы , чтобы генерировать все возможные номераa
,b
,c
выполнен в виде подмножеств из исходных чисел, переберите всеa
иb
, и проверьте, был ли требуемыйc
в наборе. Запускается в около 15 секунд, и только выходa=4853461
,b=268435455
,c=12408877
(оказывается числомb
не нужно менять). Я не уверен, есть ли более умный способ инвертировать эту функцию.источник
Стог сена , 82 байта
Трещины Ответ HyperNeutrino в
Попробуйте онлайн!
источник
0
в начале: P Приятно видеть другой подход, хотя! +1Brain-Flak , 96 байт
Cracks Funky Computer Мужской ответ .
Попробуйте онлайн!
Это было забавное испытание.
-24 в начале которого обращенные
y
кa
в оригинале теперь используется для преобразования ,e
чтобыM
, который затем преобразуется вN
месте, изменяя всю конечную петлю к())
. Первое нажатие буквыk
было замененоe
простым удалением push-pop, который добавляет 6 к нему. Остальные в основном просто встали на свои места, с некоторыми юмористическими ошибками на этом пути (включая одну программу, выход которой былMeddle
).Сравнение двух программ:
источник
N
это 77 вместо 78, поэтому я не понял этого.Haskell
Трещины @ Лайкони ответ .
Попробуйте онлайн!
Оригинальный код:
замена удаленных символов подчеркиванием:
Как
Needle
построено: строка в конце кода разбита на слова. Первый символ каждого слова увеличивается столько раз, сколько в нем есть символов, напримерHaysta
->H
плюс 6 символов ->N
.источник
Гексагония , 17 байт, H.PWiz
Попробуйте онлайн!
Сравнение с оригиналом:
Визуализация:
объяснение
Бонусные метки - использует все 6 IP-адресов и все, кроме одной ячейки!
IP # 0 начинается с того, что идет по черному пути в
]
.Затем мы переходим к IP # 1, который идет по красной дорожке, печатая,
N
аN;
затем снова оборачивая]
.Затем мы переходим к IP # 2, который идет по синему пути, сохраняя
e
в текущей ячейке памяти, затем по зеленому пути, выполняя (с отражением в\
),;;(;
которое печатаетee
, уменьшает ячейку памяти с того,e
чтобыd
затем печататьd
.IP продолжается по оранжевому пути, выполняя
Nl;se
который печатаетl
и сохраняетe
в текущей ячейке памяти. Это продолжается по коричневому пути, печатаяe
с;
, К этому моменту мы уже напечаталиNeedle
, так что остальное только заканчивается. IP хранитc
, потом хиты]
.Затем мы переходим к IP # 3, который движется по синему пути, ударяясь
\
, прыгая, в_
который врезается]
.Затем мы переходим к IP # 4, который идет по зеленому пути, подпрыгивая
_
, затем\
и переходя к]
(такc
как он положительный).Наконец, мы переходим к IP # 5, который
e
затем сохраняет данные с выхода@
.источник
Python 2 , 123 байта
Трещины agtoever Ответит
repl.it
Сравнение:
Мне было очень весело находить решения, которые печатали
Meedle
иNeedlf
подбирали многочлен к медиане индексов числовых символов, начинающихся с каждой буквыNeedle
. Затем я попытался вручную найти похожие коэффициенты с подмножествами исходной программы, но в итоге мне пришлось прибегнуть к грубому принуждению, чтобы найти верное решение.источник
Javascript, 91 байт
Трещины это . На самом деле это было весело.
Показать фрагмент кода
источник
Желе , 14 байт
Взламывает ответ Джонатана Аллана
Попробуйте онлайн!
Сравнение:
Я использовал
œc
для перебора различных подмножеств буквенных строк, используемыхtr -d
для каждого возможного фильтра, иgrep
редактировал для Needle. Использование предположения о том, что ни один из использованных символов в первой строке не использовался в ответе, позволяет найти ответ менее чем за 15 секунд.источник
Nebbed
+ruble
без каких-либо изrub
.Python 2 , 73 байта
Трещины user71546 Ответим .
Попробуйте онлайн!
Решено с помощью этой программы.
источник
Java (OpenJDK 8), 191 байт
Взламывает ответ Люка Стивена
Попробуйте онлайн!
Удаленные символы:
Это заставляет
d
оценивать078101101100108101
, какие заклинанияNeedle
.источник
Рубин , 149 байт
Взламывает это: /codegolf//a/144790/74216
Модуль был довольно маленьким, поэтому я написал многопоточную вещь на день рождения и надеялся на лучшее.
Редактировать: И после этого нашел еще более короткий ответ.
Попробуйте онлайн!
Изменения:
источник
постоянный ток , 34 байта
Трещины это . TIO .
Я начал с получения числового представления Хейстек (5215583380252484459) и Игла (86197399743589). Далее я произвел факторизацию последнего, которая составляет 47 * 432323 * 4242169. Исходя из этого, было довольно легко восстановить эти цифры.
Маркировка используемых символов:
источник
Гексагония , 19 байтов, Мартин Эндер
Попробуйте онлайн!
Сравнение с оригиналом
Развернутый код
Итак, я никогда ничего не писал в гексагонии, но я рассчитывал только с 37 байтами, которые я мог бы придумать. Мартин, я надеюсь, ты знаешь, что я потратил много времени, чтобы понять это. :)
Я могу ошибаться, но я объясню, что, по- моему , делает этот код:
Программа начинается с
[
, который автоматически переходит на IP # 5. Этот IP-адрес начинается в западном углу,[
снова направляясь к IP-адресу 4. Отсюда он выполняет,N;e
затем направляется в юго-восточный угол и выполняет;
, подпрыгивает вправо для другого,;
затем оборачивается,(
что уменьшает токe
до ad
. Затем он продолжает (с переносом)...;.
затем отскакивает кl
и попадает в[
последний раз, переходя на IP # 3. Он выполняет;
,>
перенаправляет на северо-запад, а.
затем<
перенаправляет на запад, нажимаяe
, оборачивая;
и заканчивая на@
.Подробная версия
Показать фрагмент кода
Я так рад, что вы использовали нормальный размер шестиугольника для программы Needle; Я проверял программы размера 19 (для шестигранника с длиной стороны 3), когда понял, что вы можете удалить любое количество символов, и он автоматически заполнит шестигранник
.
s в конце, что значительно усложнит его взлом. Как таковой, Hexagony - злой язык для этой задачи, потому что (в основном) любой удаляемый символ меняет весь путь выполнения программы. Тем не менее, мне нравилось пытаться придумать это, даже если я в конце концов и сделал грубое принуждение. :)источник
Java (OpenJDK 8) , 151 байт
Трещины Ответ Кевин Cruijssen в
Попробуйте онлайн!
Сравнение:
Я чувствую, что последняя часть не была предназначена.
источник
v->{String h="Haystack";int x=7;return new String(new java.math.BigInteger(new byte[]{(byte)((~-~-~-~-~-~-~-~1^-x++*x)+15),new Byte(""+10+((x=h.length()*4/x)+x-7))}).toByteArray())+(new StringBuffer("hidden".substring(++x%3,x).replaceFirst("d","e"+(char)(x*21+3))).reverse());}
(не знаю, почему я включил BigInteger, поскольку достаточно только байтового массива ...) , но мне больше нравится твоя .. :)Brain-Flak , 102 байта
Трещины ответ H.PWiz в .
Попробуйте онлайн!
источник
Ly , 21 байт
Попробуйте онлайн!
Трещины ответ LyricLy в .
источник
Java от Джонатана С.
TiO
Просто удалите петлю, которая добавляет сено, и ничего не останется в стеке, кроме иглы.
источник
equals
метода работает так же хорошо.Pyth , 21 байт
взламывает это .
Попробуйте онлайн!
источник
T-SQL по phroureo , 757 байт
Почему-то я не думаю, что это было намеченное решение. Использует символы в окружении
{}
:источник
PHP
Трещины Титус ответ
Попробуйте онлайн
источник