लुटेरों के पोस्ट के लिए, सस्ता एनिग्मा मशीन (लुटेरे)
एक पुलिस के प्रस्तुत करने में एक प्रोग्राम / फ़ंक्शन शामिल होगा जो डेटा के एक बाइट को स्वीकार करता है और डेटा का एक बाइट लौटाता है। हर संभव इनपुट को एक अद्वितीय आउटपुट का उत्पादन करना चाहिए। (दूसरे शब्दों में, आपका कार्य विशेषण होना चाहिए)
लुटेरे जितना संभव हो उतना कम कोड का उपयोग करके आपका उलटा कार्य करने का प्रयास करेंगे। इसलिए आपका उद्देश्य आपके कार्य को उल्टा करना कठिन बनाता है।
आप बिल्ट-इन का उपयोग नहीं कर सकते जिनके पास हैशिंग या एन्क्रिप्शन का एकमात्र उद्देश्य है।
आपकी बाइट गिनती 64 बाइट्स से अधिक नहीं हो सकती। 0-बाइट समाधान जीतने के लिए पात्र नहीं हैं।
इनपुट / आउटपुट प्रारूप
8 बिट्स (0 या 1), या बेस -10 पूर्णांक 1-256, 0-255 या -128 से 127 में। मानक I / O या फ़ाइल 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 का स्कोर देता है।