परिचय:
मेरे पास एक दस्तावेज के रूप में संग्रहीत विभिन्न सिफर के भार हैं, जिन्हें मैंने एक बार एक बच्चे के रूप में संकलित किया था, मैंने उनमें से कुछ को चुना जो मुझे लगा कि चुनौतियों के लिए सबसे उपयुक्त हैं (बहुत तुच्छ नहीं, और बहुत कठिन नहीं) और उन्हें चुनौतियों में तब्दील कर दिया। उनमें से ज्यादातर अभी भी सैंडबॉक्स में हैं, और मुझे अभी तक यकीन नहीं है कि मैं उन सभी को पोस्ट करूंगा या केवल कुछ। यहाँ दूसरा है ( कंप्यूटर सिफर पहला पोस्ट था जिसे मैंने पोस्ट किया था)।
के लिए त्रिशिखा सिफर वर्णमाला (एक कीवर्ड का उपयोग किए बिना) (और एक अतिरिक्त वाइल्डकार्ड) तीन 3 से 3 टेबल में विभाजित है:
table 1: table 2: table 3:
|1 2 3 |1 2 3 |1 2 3
-+----- -+----- -+-----
1|a b c 1|j k l 1|s t u
2|d e f 2|m n o 2|v w x
3|g h i 3|p q r 3|y z
एक पाठ जिसे हम आत्मसात करना चाहते हैं वह तालिका-पंक्ति-स्तंभ संख्याओं में कूटबद्ध चरित्र द्वारा पहला वर्ण है। उदाहरण के लिए, पाठ this is a trifid cipher
बन जाता है:
t h i s i s a t r i f i d c i p h e r
table: 3 1 1 3 3 1 3 3 1 3 3 2 1 1 1 1 3 1 1 2 1 1 2
row: 1 3 3 1 3 3 1 3 1 3 1 3 3 2 3 2 3 1 3 3 3 2 3
column: 2 2 3 1 3 3 1 3 1 3 2 3 3 3 3 1 3 3 3 1 2 2 3
फिर हम तीन के समूहों में ऊपर की पंक्ति में एक दूसरे पंक्ति के बाद सब कुछ डालते हैं:
311 331 331 332 111 131 121 121 331 331 313 133 232 313 332 322 313 313 132 333 313 331 223
और वे एक ही तालिकाओं का उपयोग करके वर्णों में बदल जाते हैं:
s y y z a g d d y y u i q u z w u u h u y o
ध्यान देने वाली एक बात, इनपुट-लंबाई 3. तक होनी चाहिए। इसलिए यदि लंबाई 3 से अधिक है, तो हम इनपुट-लंबाई को एक या दो नहीं, बल्कि एक या दो अनुगामी रिक्त स्थान जोड़ते हैं।
चुनौती:
एक तार दिया sentence_to_encipher
, जैसा कि ऊपर बताया गया है, उसे लागू करें।
आपको केवल दी गई जानकारी को पूरा करना होगा sentence_to_encipher
, इसलिए एक डिक्रिपरिंग प्रोग्राम / फ़ंक्शन भी बनाने की आवश्यकता नहीं है। मैं भविष्य में डिक्रीफ़रिंग के लिए एक भाग 2 चुनौती बना सकता हूँ (हालाँकि मुझे लग रहा है कि यह तुच्छ / enciphering प्रक्रिया के समान है)।
चुनौती नियम:
- आप मान सकते हैं
sentence_to_encipher
वसीयत में केवल अक्षर और स्थान होंगे। - आप पूर्ण लोअरकेस या पूर्ण अपरकेस का उपयोग कर सकते हैं (कृपया बताएं कि आपने अपने उत्तर में किसका उपयोग किया है)।
- जब इनपुट-लंबाई 3 हो तो इसे 3 के एक से अधिक नहीं बनाने के लिए आप या तो एक या दो अनुगामी रिक्त स्थान को चुन सकते हैं।
- I / O लचीला है। इनपुट और आउटपुट दोनों एक स्ट्रिंग, सूची / सरणी / वर्णों की धारा आदि हो सकते हैं।
सामान्य नियम:
- यह कोड-गोल्फ है , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
कोड-गोल्फ भाषाओं को गैर-कोडगॉल्फिंग भाषाओं के साथ उत्तर पोस्ट करने से हतोत्साहित न करें। 'किसी भी' प्रोग्रामिंग भाषा के लिए यथासंभव संक्षिप्त उत्तर के साथ आने का प्रयास करें। - डिफ़ॉल्ट I / O नियमों के साथ आपके उत्तर के लिए मानक नियम लागू होते हैं , इसलिए आपको उचित पैरामीटर और रिटर्न-प्रकार, पूर्ण कार्यक्रमों के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति है। तुम्हारा फोन।
- डिफ़ॉल्ट लूपोल्स निषिद्ध हैं।
- यदि संभव हो, तो कृपया अपने कोड (यानी TIO) के लिए एक परीक्षण के साथ एक लिंक जोड़ें ) के ।
- साथ ही, आपके उत्तर के लिए स्पष्टीकरण जोड़ने की अत्यधिक अनुशंसा की जाती है।
परीक्षण के मामलों:
Input: "this is a trifid cipher"
Output: "syyzagddyyuiquzwuuh uyo"
Input: "test"
Output: "utbk"
Input: "output"
Possible outputs: "rrvgivx" (one space) or "rrzcc lr" (two spaces)
Input: "trifidcipher"
Possible output: "vabbuxlzz utr" (one space) or "vabbyzv rx ie " (two spaces)