पृष्ठभूमि
BWT (जैसा कि बर्रो, व्हीलर और बैक में देखा जाता है) और MTF (जैसा कि मूवेबल ASCII फ्रंट में मूव में देखा जाता है) को लागू करने के बाद , bzip2 कंप्रेसर रन-लेंथ एन्कोडिंग के बजाय एक अनोखा रूप लागू करता है।
परिभाषा
इस चुनौती के उद्देश्य के लिए, हम बीआरएलई को इस प्रकार परिभाषित करते हैं:
एक इनपुट स्ट्रिंग s को देखते हुए जिसमें केवल 0x20 और 0x7A के बीच कोड बिंदुओं के साथ ASCII वर्ण होते हैं, निम्न कार्य करें:
वर्ण की एक ही घटना द्वारा समान वर्णों के प्रत्येक रन को बदलें और पहले के बाद पुनरावृत्ति की संख्या को स्टोर करें।
चरित्र की पहली घटना के बाद पुनरावृत्ति की संख्या को सांकेतिक शब्दों में बदलना , विशेषण आधार -2 संख्या और प्रतीकों
{
का उपयोग करना}
।एक गैर-नकारात्मक पूर्णांक n को स्ट्रिंग b k के रूप में एन्कोड किया गया है ... b 0 ऐसा n = 2 k i (b k ) + ... + 2 0 i (b 0 ) , जहाँ i (
{
) = 1 और i (}
) = 2 ।ध्यान दें कि यह प्रतिनिधित्व हमेशा अनूठा होता है। उदाहरण के लिए, संख्या 0 एक रिक्त स्ट्रिंग के रूप में एन्कोडेड है।
घुंघराले ब्रैकेट की स्ट्रिंग डालें जो संबंधित चरित्र की एकल घटना के बाद दोहराव की संख्या को एन्कोड करता है।
चरण-दर-चरण उदाहरण
Input: "abbcccddddeeeeeffffffggggggghhhhhhhh"
Step 1: "abcdefgh" with repetitions 0, 1, 2, 3, 4, 5, 6, 7
Step 2: "" "{" "}" "{{" "{}" "}{" "}}" "{{{"
Step 3: "ab{c}d{{e{}f}{g}}h{{{"
कार्य
एक अचूक कार्यक्रम या फ़ंक्शन को लागू करें जो STDIN से एक स्ट्रिंग को पढ़ता है या कमांड-लाइन या फ़ंक्शन तर्क और प्रिंट या BRLE या इनपुट स्ट्रिंग के इसके व्युत्क्रम के रूप में रिटर्न करता है।
यदि इनपुट में कोई घुंघराले कोष्ठक नहीं हैं, तो BRLE लागू करें। यदि इनपुट में घुंघराले कोष्ठक हैं, तो इसका व्युत्क्रम लागू करें।
उदाहरण
INPUT: CODEGOLF
OUTPUT: CODEGOLF
INPUT: PROGRAMMING
OUTPUT: PROGRAM{ING
INPUT: PUZ{LES
OUTPUT: PUZZLES
INPUT: 444488888888GGGGGGGGGGGGGGGGWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
OUTPUT: 4{{8{{{G{{{{W{{{{{
INPUT: y}}}{{
OUTPUT: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
अतिरिक्त नियम
आप BRLE या इसके स्ट्रिंग के व्युत्क्रम की गणना करने वाले किसी भी बिल्ट-इन का उपयोग नहीं कर सकते ।
आप बिल्ट-इन का उपयोग कर सकते हैं:
एक स्ट्रिंग के RLE या RLD की गणना करें, जब तक कि दोहराव की संख्या जीवनी आधार -2 में संग्रहीत नहीं होती है।
किसी भी प्रकार का आधार रूपांतरण करें।
यदि आप आउटपुट के लिए STDOUT का चयन करते हैं तो आपका कोड एक अनुगामी न्यूलाइन प्रिंट कर सकता है।
आपके कोड को 0x20 से 0x7A, प्लस कर्ली कोष्ठक (0x7B और 0x7D) की सीमा में 1000 या उससे कम ASCII वर्णों के किसी भी इनपुट के लिए काम करना होगा।
यदि इनपुट में घुंघराले कोष्ठक हैं, तो आप मान सकते हैं कि यह BRLE को स्ट्रिंग पर लागू करने का एक मान्य परिणाम है।
मानक कोड गोल्फ नियम लागू होते हैं। बाइट्स में सबसे कम सबमिशन जीतता है।