Pour le poste des voleurs, machine Cheapo Enigma (voleurs)
La soumission d'un policier consistera en un programme / fonction qui accepte un seul octet de données et renvoie un seul octet de données. Chaque entrée possible doit produire une sortie unique. (En d'autres termes, votre fonction doit être bijective)
Les voleurs tenteront de créer la fonction inverse de la vôtre en utilisant un code aussi court que possible. Votre objectif est donc de rendre votre fonction difficile à inverser.
Vous ne pouvez pas utiliser de fonctions intégrées ayant pour seul but de hacher ou de chiffrer.
Votre nombre d'octets ne peut pas dépasser 64 octets. Les solutions à 0 octet ne sont pas éligibles pour gagner.
Format d'entrée / sortie
8 bits (0 ou 1) ou un entier en base 10 dans la plage 1-256, 0-255 ou -128 à 127. Peut utiliser des E / S standard ou des E / S de fichiers. La fonction peut également renvoyer une valeur en sortie. L'entrée et la sortie doivent appartenir à la même plage (binaire, 1-256, 0-255 ou -128 à 127). Le voleur devra également utiliser cette plage pour les entrées et les sorties.
Notation
Rapport de votre nombre d'octets à celui de la meilleure tentative de voleur contre vous. Le score le plus bas l'emporte.
Vous ne pouvez gagner (en tant que flic) que si un voleur a tenté de vous vaincre. (Ce voleur peut être vous)
Exemple
C ++, utilise une plage de 0 à 255, 31 octets
int x;
cin>>x;
cout<<(x+1)%256;
Soumission possible de voleur en C ++, 32 octets
int f(int x)
{return x?x-1:255;}
L'utilisation du même langage ou d'un algorithme similaire n'est pas obligatoire
Cela donne un score de 31/32 = 0,97 à la fois au flic et au voleur.