Для поста грабителей, машина Cheapo Enigma (Грабители)
Представление полицейского будет состоять из программы / функции, которая принимает один байт данных и возвращает один байт данных. Каждый возможный ввод должен производить уникальный вывод. (Другими словами, ваша функция должна быть биективной)
Грабители попытаются создать вашу обратную функцию, используя как можно более короткий код. Итак, ваша цель - сделать вашу функцию трудной для инвертирования.
Вы не можете использовать встроенные модули, которые имеют единственную цель хеширования или шифрования.
Количество ваших байтов не может превышать 64 байта. 0-байтовые решения не имеют права на выигрыш.
Формат ввода / вывода
8 бит (0 или 1) или целое число-10 в диапазоне 1-256, 0-255 или от -128 до 127. Можно использовать стандартный ввод-вывод или файловый ввод-вывод. Функция также может возвращать значение в качестве вывода. Вход и выход должны принадлежать к одному диапазону (двоичный, 1-256, 0-255 или от -128 до 127). Грабителю также потребуется использовать этот диапазон для ввода и вывода.
счет
Отношение вашего байта к числу лучших попыток грабителя против вас. Самый низкий балл побеждает.
Вы имеете право выиграть (как полицейский), только если грабитель попытался победить вас. (Этот грабитель может быть вы)
пример
C ++, использует диапазон 0-255, 31 байт
int x;
cin>>x;
cout<<(x+1)%256;
Возможна подача грабителем в C ++, 32 байта
int f(int x)
{return x?x-1:255;}
Использование того же языка или аналогичного алгоритма не является обязательным
Это дает оценку 31/32 = 0,97 для полицейского и грабителя.