Это задача полицейских и грабителей . Для нити грабителей, иди сюда .
Эта задача включает в себя две последовательности OEIS , выбранные полицейскими - S 1 , S 2 - и то, насколько хорошо эти последовательности можно обыграть и запутать.
Вызов ментов
Ваша задача как полицейского - выбрать свободно доступный язык и две последовательности OEIS. Затем напишите код A на том языке, который принимает входные данные n и выдает S 1 (n). Когда этот код модифицируется расстоянием Левенштейна из X символов (с X не более 0.5 * (length A)
) и превращается в код B на том же языке, он должен затем произвести S 2 (n). На самом деле вы должны написать этот код B , но не раскрывайте его, пока ваш вызов не будет безопасным (см. Ниже).
Представления полицейских должны включать название языка, полный код A , количество байтов A , значение X того, сколько изменений необходимо внести в их секретный код B , и выбранные порядковые номера S 1 и S 2 . Вы можете выбрать, будет ли каждая последовательность 0-индексированной или 1-индексированной, но укажите это в своем представлении.
Чтобы взломать конкретное представление, грабители должны создать программу C на том же языке (и в версии), которая производит S 2 (n) и символ Y меняется от A (с Y <= X
). Грабителям не обязательно нужно искать тот же самый B- код, который (тайно) сгенерировал полицейский.
Победа и выигрыш
Если ваш ответ полицейского не был взломан в течение 7 дней (168 часов), вы можете раскрыть свое собственное решение B , после чего ваш ответ считается безопасным. Пока вы не раскрываете свое решение, оно все равно может быть взломано грабителями, даже если 7 дней уже прошло. Если ваш ответ не получил ответа, укажите это в заголовке вашего ответа вместе со ссылкой на ответ соответствующего грабителя.
Менты выиграть, имея представление с без трещин кратчайших А . Если он привязан, то наименьший X будет использоваться как прерыватель связи. Если все еще связаны, более раннее представление выиграет.
Дальнейшие правила
- Вы не должны использовать какие-либо встроенные модули для хэширования, шифрования или генерации случайных чисел (даже если вы запрограммировали генератор случайных чисел на фиксированное значение).
- Разрешены либо программы, либо функции, но код не должен быть фрагментом кода, и вы не должны использовать среду REPL.
- Вы можете принимать и выводить данные в любом удобном формате . Методы ввода / вывода должны быть одинаковыми для обеих последовательностей.
- Окончательный калькулятор для расстояния Левенштейна для этой задачи - вот этот на Планете Calc.
- Это не только вызов CnR, но и код-гольф, поэтому применяются все обычные правила игры в гольф.
источник
(0.5*len(A))
Ответы:
Brain-Flak , 28 байтов, расстояние 4, A002817 , A090809ТрещиныЭтот ответ использует 1-индексирование
Попробуйте онлайн
Для всех, кто интересуется, существует 27475 действующих программ Brain-Flak с Левенштейном на расстоянии 4 от этой программы и 27707 с расстоянием 4 или меньше. Таким образом, решение для перебора было бы возможным на компьютере потребительского уровня.
источник
X = 4
вместоLevenshtein distance of 4
.X
действительно единственная переменная, которую они должны знать.7 , 33 символов, 13 байт, Х = 10, A000124 → A000142 , Сейф
Попробуйте онлайн!
Расстояние Левенштейна измеряется в терминах символов, поэтому я написал программу в терминах символов, которые она содержит выше (и попробуйте онлайн, включая сам язык, с удовольствием запускает программы, закодированные в ASCII). Однако программа хранится на диске с использованием суббайтовой кодировки 7, что означает, что сама программа на самом деле представляет собой следующий hexdump (таким образом, длиной 13 байт):
(Поскольку расстояние Левенштейна измеряется в символах, вы не обязательно добавляете / удаляете / меняете 10 байтов здесь, поэтому, вероятно, лучше всего работать с исходным ASCII.)
Программа в письменном виде реализует A000124 (треугольные числа + 1); любая трещина должна реализовывать A000142 (факториалы). Обе программы принимают входные данные из stdin (как десятичные целые числа), записывают свои выходные данные в stdout и обрабатывают ввод 1 как означающий первый элемент последовательности (и ввод 2 как второй элемент и т. Д.).
Хотелось бы надеяться, что очень высокое значение X остановит людей зверством в программе, на этот раз (что всегда связано с записями копов и грабителей в 7).
Решение
Попробуйте онлайн!
Отличия от оригинала:
У меня нет подготовленных объяснений о том, как они работают, поэтому мне понадобится некоторое время, чтобы получить объяснение, так как мне придется разобраться с ним практически с нуля. Надеюсь, со временем будет объяснение.
источник
Пайк, Левенштейн расстояние 1, A036487 , A135628 .
Трещины!
Попробуй это здесь!
источник
Perl 6 , 10 байтов, X = 1, A000012 → A001477
Трещины!
S 1 = A000012 =
1,1,1,1,1,...
= Последовательность всех 1. (0-индексированные)S 2 = A001477 =
0,1,2,3,4,...
= неотрицательные целые числа. (0-индексированные)Попробуйте онлайн!
Подтверждено для работы с версией Perl 6 2017.01 и версией Perl6, работающей на TIO.
( А можно дальше играть в гольф
1***
- надеюсь, это тоже разрешено, как есть.)источник
Perl 6 , 13 байтов, X = 1, A161680 → A000217
Сейф!
0 0 1 3 6 10 15 21...
= ноль, за которым следуют треугольные числа.0 1 3 6 10 15 21 28 ...
= Треугольные числа.Попробуйте онлайн!
(Подтверждено для работы с версией Perl 6, работающей на TIO.)
Решение
Как работает оригинал:
Как работает решение:
Используется тот факт, что числовые операторы, такие как сложение, обрабатывают список как число элементов, поэтому в примере сумма равна
1 + 2 + 3 + 4 = 10
.И да, в оригинале запрет «Уменьшить с запятой» в некотором роде обходит правила игры в гольф, но я предпочитаю смотреть на него как на глупый алгоритм, который был в максимально возможной степени (пробел и т. Д.) Для что это... :)
источник
Желе , 11 байт, X = 5, A005185 → A116881
Это полная программа, которая принимает целое число в качестве аргумента командной строки и печатает целое число.
Обе последовательности индексируются как в OEIS, то есть A005185 индексируется 1, а A116881 индексируется 0.
Попробуйте онлайн!
источник
Javascript, 41 байт, Расстояние от 3, A061313 , A004526 , Cracked
Попробуйте онлайн
Использует индексирование на основе 1, решение использует индексацию на основе 0.
Еще раз, другое решение ...
источник
Perl 6 , 19 байтов, X = 1, A000045 → A000035
Трещины!
0 1 1 2 3 5 8 13 21 34...
= "числа Фибоначчи". ( 0-индексированный )0 1 0 1 0 1 0 1 0 1...
= "Период 2". ( 0-индексированный )Попробуйте онлайн!
(Подтверждено для работы с версией Perl 6, работающей на TIO.)
источник
WolframAlpha, 18 байт, X = 1Взломанный math_junkie!
Иногда WolframAlpha действительно может отображать чистую функцию, подобную этой, в функциональной форме (иногда это путается); но он может быть весело вызван с заданным вводом - например,
(sum1to#of n^1)*2&@5
выходами30
.S1 = A002378 (пронические числа)
S2 = A000537 (сумма первых
n
кубов)Обе последовательности имеют индекс 0.
источник
Пайк, Левенштейн расстояние 2, A008788 , A007526
Трещины!
Попробуй это здесь!
Давайте немного сложнее, не так ли?
Первый ответ основан на 1, а трещина - на 0.
источник
Javascript, 15704 байта, расстояние 2, A059841 и A000004 - взломан
Это решение очень длинное, поэтому вы можете найти полный код в этом github gist.
Исходный ответ (этот) 1 проиндексирован. (Я знаю, что это слишком долго, это просто для удовольствия.)
источник
Brain-Flak , 16 байтов, расстояние Левенштейна 4, A000217 и A002378 - взломано Мартином Эндером!
Попробуйте онлайн!
Это должно быть довольно легко взломать.
источник
Javascript, 30 байтов, расстояние 4, A000290 , A000079 , - треснул !
Индексирование на основе 0
Решение @Kritixi Lithos фактически отличалось от моего
Попробуйте онлайн
источник
x**2
и нет2**x
Javascript (ES6), расстояние 1, A000079 и A000004 - взломан
Исходный ответ (этот) - 0 на основе. Теперь, когда он был взломан, вот оригинальная функция B:
источник
Perl 6 , 7 байтов, X = 2, A059841 → A001477
Трещины!
1 0 1 0 1 0 1 0...
= "* Период 2: Повтор (1,0)". (0-индексированные)0 1 2 3 4 5 6 7...
= "Неотрицательные целые числа". (0-индексированные)Попробуйте онлайн!
(Подтверждено для работы с версией Perl 6, работающей на TIO.)
источник
Java 7, расстояние Левенштейна 4, A094683 , A000290 , Трещины
0 индексированные.
Попробуй это здесь!
источник