Para el puesto de ladrones, máquina Cheapo Enigma (ladrones)
El envío de un policía consistirá en un programa / función que acepta un solo byte de datos y devuelve un solo byte de datos. Cada entrada posible debe producir una salida única. (En otras palabras, su función debe ser biyectiva)
Los ladrones intentarán crear la función inversa de los suyos utilizando un código lo más corto posible. Por lo tanto, su objetivo es hacer que su función sea difícil de invertir.
No puede utilizar elementos integrados que tengan el único propósito de cifrar o cifrar.
Su recuento de bytes no puede exceder los 64 bytes. Las soluciones de 0 bytes no son elegibles para ganar.
Formato de entrada / salida
8 bits (0 o 1), o un entero de base 10 en el rango 1-256, 0-255 o -128 a 127. Puede usar E / S estándar o E / S de archivo. La función también puede devolver un valor como salida. La entrada y la salida deben pertenecer al mismo rango (binario, 1-256, 0-255 o -128 a 127). El ladrón también deberá usar este rango para entrada y salida.
Puntuación
Relación entre el número de bytes y el intento del mejor ladrón contra usted. La puntuación más baja gana.
Eres elegible para ganar (como policía) solo si un ladrón ha intentado vencerte. (Este ladrón puede ser usted)
Ejemplo
C ++, usa rango 0-255, 31 bytes
int x;
cin>>x;
cout<<(x+1)%256;
Posible envío de ladrones en C ++, 32 bytes
int f(int x)
{return x?x-1:255;}
Usar el mismo lenguaje o un algoritmo similar no es un requisito
Esto le da un puntaje de 31/32 = 0.97 tanto al policía como al ladrón.