परिचय
इस चुनौती में आप विकर्ण बरोज़-व्हीलर ट्रांसफॉर्म को हल कर रहे होंगे। यहाँ एक सामान्य अवलोकन है कि एक विकर्ण बर्स-व्हीलर ट्रांसफ़ॉर्म क्या है। किसी संदेश को एनकोड करने के लिए, आपको पहले गारंटी देनी चाहिए कि यह लंबाई में विषम है (यानी 5, 7, 9, आदि)। तो फिर तुम एक ग्रिड बनाने के लिए, n
द्वारा n
, जहां n
संदेश की लंबाई है। पहली पंक्ति मूल संदेश है। उसके बाद की प्रत्येक पंक्ति उसके ऊपर की पंक्ति है, लेकिन पहले वर्ण को पीछे छोड़ते हुए 1 वर्ण छोड़ दिया गया। उदाहरण के लिए:
Hello World
ello WorldH
llo WorldHe
lo WorldHel
o WorldHell
WorldHello
WorldHello
orldHello W
rldHello Wo
ldHello Wor
dHello Worl
फिर आप प्रत्येक पत्र को NW पर SE विकर्ण पर ले जाते हैं और उसे एक नए तार में डालते हैं:
Hello World H
ello WorldH l
llo WorldHe o
lo WorldHel W
o WorldHell r
WorldHello d
WorldHello e
orldHello W l
rldHello Wo (space)
ldHello Wor o
dHello Worl l
आपका इनकोडिंग संदेश है HloWrdel ol
। डीकोड करने के लिए, पहले एन्कोडेड संदेश की लंबाई लें, 1 जोड़ें, और 2 से विभाजित करें x
। इस नंबर पर कॉल करें । अब जब हम जानते हैं x
, पहले अक्षर से शुरू होता है, तो प्रत्येक अक्षर x
आखिरी के बाद, चारों ओर से लूपिंग होता है। उदाहरण के लिए:
H l o W r d e l o l
1
Then...
H l o W r d e l o l
1 2
And again...
H l o W r d e l o l
1 3 2
Until you get...
H l o W r d e l o l
1 3 5 7 9 11 2 4 6 8 10
अब सिर्फ पाने के लिए सही क्रम में अक्षरों को फिर से व्यवस्थित करें Hello World
!
चुनौती
आपकी चुनौती या तो दो कार्यक्रमों, कार्यों, या प्रत्येक में से एक को लिखना है। हालाँकि, दोनों को एक ही भाषा का उपयोग करना चाहिए। पहला प्रोग्राम STDIN, प्रोग्राम आर्ग्यूमेंट्स या फंक्शन पैरामीटर्स के जरिए एक स्ट्रिंग को इनपुट के रूप में स्वीकार करेगा और इस पद्धति का उपयोग करके इसे एनकोड करेगा। दूसरा प्रोग्राम STDIN, प्रोग्राम आर्गुमेंट्स या फंक्शन पैरामीटर्स के जरिए एक स्ट्रिंग को इनपुट के रूप में स्वीकार करेगा और इस पद्धति का उपयोग करके इसे डीकोड करेगा।
आवश्यकताएँ
पहला कार्यक्रम / समारोह
- ऊपर सूचीबद्ध किसी भी विधि का उपयोग करके एक एकल स्ट्रिंग इनपुट।
- एक विकर्ण बरोज़-व्हीलर परिवर्तन शैली का उपयोग करके स्ट्रिंग को एन्कोड करना चाहिए।
दूसरा कार्यक्रम / समारोह
- ऊपर सूचीबद्ध किसी भी विधि का उपयोग करके एक एकल स्ट्रिंग इनपुट।
- एक विकर्ण बरोज़-व्हीलर परिवर्तन शैली का उपयोग करके स्ट्रिंग को डीकोड करना चाहिए।
प्रतिबन्ध
- आप इस कार्य को पूरा करने वाले किसी भी अंतर्निहित या बाहरी कार्यों का उपयोग नहीं कर सकते।
- मानक खामियों की अनुमति नहीं है।
- दोनों कार्यक्रम / कार्य एक ही भाषा में होने चाहिए।
स्कोरिंग
यह कोड गोल्फ है, इसलिए बाइट्स जीत में सबसे छोटा कार्यक्रम है ।
अगर मुझे अधिक जानकारी जोड़ने की आवश्यकता है, तो एक टिप्पणी छोड़ दें!