Für Räuberpost , Cheapo Enigma-Maschine (Räuber)
Die Übermittlung eines Polizisten besteht aus einem Programm / einer Funktion, die ein einzelnes Datenbyte akzeptiert und ein einzelnes Datenbyte zurückgibt. Jede mögliche Eingabe muss eine eindeutige Ausgabe erzeugen. (Mit anderen Worten, Ihre Funktion muss bijektiv sein)
Räuber werden versuchen, Ihre Umkehrfunktion mit einem möglichst kurzen Code zu erzeugen. Ihr Ziel ist es also, die Invertierbarkeit Ihrer Funktion zu erschweren.
Sie können keine integrierten Funktionen verwenden, die ausschließlich zum Hashing oder zur Verschlüsselung dienen.
Ihre Byteanzahl darf 64 Bytes nicht überschreiten. 0-Byte-Lösungen sind nicht gewinnberechtigt.
Eingabe- / Ausgabeformat
8 Bits (0 oder 1) oder eine Ganzzahl zur Basis 10 im Bereich von 1-256, 0-255 oder -128 bis 127. Kann Standard-E / A oder Datei-E / A verwenden. Die Funktion kann auch einen Wert als Ausgabe zurückgeben. Eingang und Ausgang sollten im selben Bereich liegen (binär, 1-256, 0-255 oder -128 bis 127). Der Räuber muss diesen Bereich auch für die Ein- und Ausgabe verwenden.
Wertung
Das Verhältnis Ihrer Byteanzahl zu dem des besten Räuberversuchs gegen Sie. Die niedrigste Punktzahl gewinnt.
Sie sind nur dann zum Sieg berechtigt (als Polizist), wenn ein Räuber versucht hat, Sie zu besiegen. (Dieser Räuber kann Sie sein)
Beispiel
C ++ verwendet einen Bereich von 0 bis 255 (31 Byte)
int x;
cin>>x;
cout<<(x+1)%256;
Mögliche Raubübermittlung in C ++, 32 Bytes
int f(int x)
{return x?x-1:255;}
Die Verwendung derselben Sprache oder eines ähnlichen Algorithmus ist nicht erforderlich
Dies ergibt eine Punktzahl von 31/32 = 0,97 sowohl für den Polizisten als auch für den Räuber.