Для грабіжних поштов, машина Enigma Cheapo (грабіжники)
Подання копа складається з програми / функції, яка приймає один байт даних і повертає один байт даних. Кожен можливий вхід повинен дати унікальний вихід. (Іншими словами, ваша функція повинна бути біективною)
Розбійники спробують створити вашу зворотну функцію, використовуючи якомога коротший код. Отже, ваша мета - зробити вашу функцію важкою для інвертування.
Ви не можете використовувати вбудовані модулі, які мають єдину мету хешування або шифрування.
Кількість байтів не може перевищувати 64 байт. 0-байтні рішення не підлягають виграшу.
Формат вводу / виводу
8 біт (0 або 1) або ціле число базового 10 в діапазоні 1-256, 0-255 або від -128 до 127. Можна використовувати стандартний введення / вивід або файл I / O. Функція також може повернути значення як вихід. Вхід і вихід повинні належати до одного діапазону (двійкові, 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 і для поліцейського, і для грабіжника.