पृष्ठभूमि
कदम-से-सामने परिणत (MTF) एक डेटा एन्कोडिंग एन्ट्रापी एन्कोडिंग तकनीक के प्रदर्शन में सुधार करने के लिए बनाया एल्गोरिथ्म है।
में bzip2 संपीड़न एल्गोरिथ्म , यह बाद लागू किया जाता बिल-व्हीलर को बदलने (के रूप में के रूप में देखा बरोज व्हीलर और वापस ), छोटे, आसानी से संपीड़न योग्य गैर नकारात्मक पूर्णांक में बार-बार पात्रों के समूह मोड़ करने के उद्देश्य से।
परिभाषा
इस चुनौती के उद्देश्य के लिए, हम MTF के मुद्रण योग्य ASCII संस्करण को निम्नानुसार परिभाषित करेंगे:
यह देखते हुए एक इनपुट स्ट्रिंग रों , एक खाली सरणी ले आर , स्ट्रिंग घ सभी प्रिंट योग्य ASCII वर्ण की (0x7E को 0x20) और हर किरदार के लिए निम्नलिखित दोहराने ग की रों :
के सूचकांक संलग्न ग में घ के लिए आर ।
सी को d के सामने ले जाइए , अर्थात c को d से हटाएं और शेष पर प्रीपिंड करें।
अंत में, हम मूल d में अनुक्रमित r के तत्वों को लेते हैं और संबंधित वर्ण लाते हैं।
चरण-दर-चरण उदाहरण
INPUT: "CODEGOLF"
0. s = "CODEGOLF"
d = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = []
1. s = "ODEGOLF"
d = "C !\"#$%&'()*+,-./0123456789:;<=>?@ABDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35]
2. s = "DEGOLF"
d = "OC !\"#$%&'()*+,-./0123456789:;<=>?@ABDEFGHIJKLMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47]
3. s = "EGOLF"
d = "DOC !\"#$%&'()*+,-./0123456789:;<=>?@ABEFGHIJKLMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37]
4. s = "GOLF"
d = "EDOC !\"#$%&'()*+,-./0123456789:;<=>?@ABFGHIJKLMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37 38]
5. s = "OLF"
d = "GEDOC !\"#$%&'()*+,-./0123456789:;<=>?@ABFHIJKLMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37 38 40]
6. s = "LF"
d = "OGEDC !\"#$%&'()*+,-./0123456789:;<=>?@ABFHIJKLMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37 38 40 3]
7. s = "F"
d = "LOGEDC !\"#$%&'()*+,-./0123456789:;<=>?@ABFHIJKMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37 38 40 3 45]
8. s = ""
d = "FLOGEDC !\"#$%&'()*+,-./0123456789:;<=>?@ABHIJKMNPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
r = [35 47 37 38 40 3 45 41]
OUTPUT: "COEFH#MI"
कार्य
एक प्रोग्राम या फ़ंक्शन लिखें जो मुद्रण योग्य ASCII MTF को लागू करता है (जैसा कि ऊपर परिभाषित किया गया है)।
परीक्षण के मामलों
Input: Programming Puzzles & Code Golf
Output: Prpi"do lp%((uz rnu&3!P/o&$U$(p
Input: NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN BATMAN!
Output: Na! !! !! !! !! !! !! !! !! !! !! !! !! !! !! !!"DDUP"%'
Input: Two more questions and I have bzip2 in less than 100 bytes!
Output: Twp#o"si$sv#uvq(u$(l#o#W!r%w+$pz,xF%#,"x(. #0--'$GG ".z(**:
अतिरिक्त नियम
आप किसी स्ट्रिंग के MTF की गणना करने वाले किसी भी अंतर्निहित ऑपरेटर का उपयोग नहीं कर सकते।
यदि आप आउटपुट के लिए STDOUT का चयन करते हैं तो आपका कोड एक अनुगामी न्यूलाइन प्रिंट कर सकता है।
आपके कोड को 1000 या उससे कम मुद्रण योग्य ASCII वर्णों (0x20 से 0x7E) के किसी भी इनपुट के लिए काम करना होगा।
मानक कोड गोल्फ नियम लागू होते हैं। बाइट्स में सबसे कम सबमिशन जीतता है।