यह xkcd # 153 पर आधारित है ।
एक प्रोग्राम या नामांकित फ़ंक्शन बनाएं जो 2 पैरामीटर लेता है, जिनमें से प्रत्येक स्ट्रिंग या बाइट्स या वर्णों की एक सूची या सरणी है। दूसरे पैरामीटर में केवल lrfu
(या बराबर ASCII बाइट्स) से तैयार किए गए वर्ण होंगे । इसे पहले पैरामीटर द्वारा दर्शाए गए बिट अनुक्रम पर किए जाने वाले निर्देशों की एक श्रृंखला के रूप में समझा जाना चाहिए।
निष्पादित प्रसंस्करण निम्नलिखित के बराबर होना चाहिए:
- प्रत्येक चरित्र के बिट्स को समेटकर गठित एकल बिटस्ट्रिंग में पहले पैरामीटर को परिवर्तित करें (7-बिट एएससीआईआई, 8-बिट विस्तारित एएससीआईआई या एक मानक यूनिकोड एन्कोडिंग के रूप में व्याख्या की गई)। जैसे अगर पहला पैरामीटर है
"AB"
तो यह10000011000010
(7-बिट),0100000101000010
(8-बिट या UTF-8)00000000010000010000000001000010
, या01000001000000000100001000000000
(UTF-16 दो एंडियननेस में), आदि में से एक होगा। - प्रत्येक पैरामीटर के लिए दूसरे पैरामीटर में, क्रम में, इसी निर्देश को निष्पादित करें:
l
एक छोड़ दिया बिटस्ट्रिंग घूमता है। जैसे10000011000010
बन जाता है00000110000101
।r
बिटस्ट्रिंग को सही घुमाता है। जैसे10000011000010
बन जाता है01000001100001
।f
फ़्लिप (या inverts) बिटस्ट्रिंग में प्रत्येक बिट। जैसे10000011000010
बन जाता है01111100111101
।u
बिटस्ट्रिंग को उलट देता है। जैसे10000011000010
बन जाता है01000011000001
।
- बिटस्ट्रिंग को एक ASCII स्ट्रिंग में परिवर्तित करें जो प्रति बिट एक वर्ण का उपयोग करता है। जैसे
10000011000010
बन जाता है"10000011000010"
। इसका कारण यह है कि 7/8 बिट्स के सभी सेटों में एक वर्ण उन्हें नहीं सौंपा गया है।
उदाहरण (पायथन में):
>>> f("b", "rfu")
01110011
यह "b"
अपने 8-बिट ASCII बाइनरी प्रतिनिधित्व में बदल जाता है 01100010
, इसे सही घुमाता है ( 00110001
), प्रत्येक बिट ( 11001110
) को फ़्लिप करता है , और इसे उलट देता है ( 01110011
)।
लचीलापन
अन्य पात्रों अक्षरों के स्थान पर इस्तेमाल किया जा सकता l
, r
, f
, और u
, पर वे स्पष्ट रूप से प्रलेखित किया जाना चाहिए।
स्कोरबोर्ड
निम्न कोड स्निपेट बनाने के लिए @Optimizer का धन्यवाद । उपयोग करने के लिए, "शो कोड स्निपेट" पर क्लिक करें, नीचे स्क्रॉल करें और "click रन कोड स्निपेट" पर क्लिक करें।
"rrfrburb"
? इसके अलावा, जब कोई बिट्स को बदलता है या उलटता है, तो क्या प्रत्येक व्यक्ति पत्र या पूरे के रूप में स्ट्रिंग के लिए करता है? अधिक परीक्षण मामले इसे स्पष्ट करेंगे।