Soyguncuların direği için Cheapo Enigma makinesi (Soyguncular)
Bir polisin gönderimi, tek bir bayt veri kabul eden ve tek bir bayt veri döndüren bir program / fonksiyondan oluşur. Olası her girdi benzersiz bir çıktı üretmelidir. (Başka bir deyişle, işleviniz iki yönlü olmalıdır)
Soyguncular, mümkün olduğunca kısa bir kod kullanarak ters fonksiyonunuzu yaratmaya çalışacaktır. Yani amacınız fonksiyonunuzu ters çevirmeyi zorlaştırmaktır.
Yalnızca karma veya şifreleme amaçlı yerleşik bileşenleri kullanamazsınız.
Bayt sayınız 64 baytı aşamaz. 0 baytlık çözümler kazanmak için uygun değildir.
Giriş / Çıkış formatı
8 bit (0 veya 1) veya 1-256, 0-255 veya -128 ila 127 aralığında bir temel-10 tamsayısı. Standart G / Ç veya dosya G / Ç kullanabilir. İşlev ayrıca bir değeri çıktı olarak döndürebilir. Giriş ve çıkış aynı aralığa ait olmalıdır (ikili, 1-256, 0-255 veya -128 ila 127). Soyguncunun ayrıca bu aralığı giriş ve çıkış için kullanması gerekecektir.
puanlama
Bayt sayımınızın en iyi soyguncunun size karşı girişimine oranı. En düşük puan kazanır.
Sadece bir soyguncu sizi yenmeye çalıştığında (polis olarak) kazanmaya hak kazanırsınız. (Bu soyguncu sen olabilirsin)
Misal
C ++, 0-255 aralığı, 31 bayt kullanır
int x;
cin>>x;
cout<<(x+1)%256;
C ++ 'da olası soyguncu gönderimi, 32 bayt
int f(int x)
{return x?x-1:255;}
Aynı dili veya benzer bir algoritmayı kullanmak şart değildir
Bu hem polise hem de soyguncuya 31/32 = 0.97 puan verir.