परिचय:
मेरे पास एक दस्तावेज के रूप में संग्रहीत विभिन्न सिफर का भार है, जिन्हें मैंने एक बार एक बच्चे के रूप में संकलित किया था, मैंने उनमें से कुछ को चुना जो मुझे लगा कि चुनौतियों के लिए सबसे उपयुक्त थे (बहुत तुच्छ नहीं, और बहुत कठिन नहीं) और उन्हें चुनौतियों में बदल दिया। उनमें से अधिकांश अभी भी सैंडबॉक्स में हैं, और मुझे अभी तक यकीन नहीं है कि मैं उन सभी को पोस्ट करूंगा या केवल कुछ। लेकिन यहाँ उनमें से पहला है जो चीजों की शुरुआत करता है।
एक कंप्यूटर सिफर दिए गए पाठ को दिए गए 'यादृच्छिक' वर्ण समूहों में शामिल करेगा length
। यदि इस तरह के समूह में एक अंक होता है, तो वह उस अंक का उपयोग अपने स्वयं के समूह में अनुक्रमित वर्ण के लिए अनुक्रमित करने के लिए करेगा। यदि कोई अंक समूह में मौजूद नहीं है, तो इसका मतलब है कि पहले वर्ण का उपयोग किया जाता है।
उदाहरण के लिए, मान लें कि हम पाठ this is a computer cipher
को दी गई लंबाई के साथ जोड़ना चाहते हैं 5
। यह एक संभावित आउटपुट है (ध्यान दें: संख्या नीचे उदाहरण में 1-अनुक्रमित है):
t h i s i s a c o m p u t e r c i p h e r (without spaces of course, but added as clarification)
qu5dt hprit k3iqb osyw2 jii2o m5uzs akiwb hwpc4 eoo3j muxer z4lpc 4lsuw 2tsmp eirkr r3rsi b5nvc vid2o dmh5p hrptj oeh2l 4ngrv (without spaces of course, but added as clarification)
आइए कुछ समूहों को उदाहरण के रूप में समझाएं कि समूह को कैसे समझा जाए:
qu5dt
: इस समूह में एक अंक होता है5
, इसलिए (1-अनुक्रमित) इस समूह का 5 वाँ वर्ण दशानुकूल पाठ के लिए प्रयुक्त वर्ण हैt
:।hprit
: इस समूह में कोई अंक नहीं है, इसलिए इस समूह के पहले वर्ण का उपयोग दशांश पाठ के लिए किया जाता हैh
:।osyw2
: इस समूह में एक अंक होता है2
, इसलिए (1-अनुक्रमित) इस समूह का दूसरा वर्ण दशानुकूल पाठ के लिए प्रयुक्त वर्ण हैs
:।
चुनौती:
एक पूर्णांक length
और स्ट्रिंग को देखते हुए word_to_encipher
, जैसा कि ऊपर वर्णित है , एक यादृच्छिक enciphered स्ट्रिंग आउटपुट करता है।
आप केवल दिया कूटलेखन के लिए है length
और word_to_encipher
इतनी के रूप में अच्छी तरह से एक गूढ़ रहस्य कार्यक्रम / समारोह बनाने की आवश्यकता,। मैं भविष्य में हालांकि डिक्रिप्शन के लिए एक भाग 2 चुनौती बना सकता हूं।
चुनौती नियम:
- आप मान सकते हैं
length
कि सीमा में इच्छाशक्ति है[3,9]
। - आप मान सकते हैं कि
word_to_encipher
वसीयत में केवल अक्षर होंगे। - आप पूर्ण लोअरकेस या पूर्ण अपरकेस का उपयोग कर सकते हैं (कृपया बताएं कि आपने अपने उत्तर में किसका उपयोग किया है)।
- आपके आउटपुट, प्रत्येक समूह और एक समूह में अंकों की स्थिति (यदि मौजूद है) समान रूप से यादृच्छिक होनी चाहिए । तो वर्णमाला के सभी यादृच्छिक अक्षरों को होने का एक ही मौका है; प्रत्येक समूह में enciphered पत्र की स्थिति होने की समान संभावना है; और अंक की स्थिति में होने की समान संभावना है (सिवाय इसके कि यह पहला वर्ण है और कोई अंक मौजूद नहीं है, और यह स्पष्ट रूप से एक ही स्थिति पर नहीं हो सकता है)।
- आपको 1-अनुक्रमित के बजाय 0-अनुक्रमित अंकों का उपयोग करने की भी अनुमति है। कृपया बताएं कि आपने अपने उत्तर में दोनों में से किसका उपयोग किया है।
- अंक
1
(या0
जब 0-अनुक्रमित) आउटपुट में कभी भी मौजूद नहीं होगा। तोb1ndh
चरित्र 'बी' को समृद्ध करने के लिए एक वैध समूह नहीं है। हालांकि,b4tbw
मान्य है, जहां है4
enciphersb
4 (1-अनुक्रमित) की स्थिति, और अन्य पात्रों परb
,t
,w
यादृच्छिक (जो संयोगवश यह भी एक शामिल हैंb
)। के अन्य संभावित वैध समूहोंlength
5 कूटलेखन के लिए चरित्र 'बी' हैं:abcd2
,ab2de
,babbk
,hue5b
, आदि
सामान्य नियम:
- यह कोड-गोल्फ है , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
कोड-गोल्फ भाषाओं को गैर-कोडगॉल्फिंग भाषाओं के साथ उत्तर पोस्ट करने से हतोत्साहित न करें। 'किसी भी' प्रोग्रामिंग भाषा के लिए यथासंभव संक्षिप्त उत्तर के साथ आने का प्रयास करें। - डिफ़ॉल्ट I / O नियमों के साथ आपके जवाब के लिए मानक नियम लागू होते हैं , इसलिए आपको उचित पैरामीटर और रिटर्न-प्रकार, पूर्ण कार्यक्रमों के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति है। तुम्हारा फोन।
- डिफ़ॉल्ट लूपोल्स वर्जित हैं।
- यदि संभव हो, तो कृपया अपने कोड (यानी TIO ) के लिए एक परीक्षण के साथ एक लिंक जोड़ें ।
- साथ ही, आपके उत्तर के लिए स्पष्टीकरण जोड़ना अत्यधिक अनुशंसित है।
परीक्षण के मामलों:
Input:
Length: 5
Word to encipher: thisisacomputercipher
Possible output:
qu5dthpritk3iqbosyw2jii2om5uzsakiwbhwpc4eoo3jmuxerz4lpc4lsuw2tsmpeirkrr3rsib5nvcvid2odmh5phrptjoeh2l4ngrv
Input:
Length: 8
Word to encipher: test
Possible output:
ewetng4o6smptebyo6ontsrbtxten3qk
Input:
Length: 3
Word to encipher: three
Possible output:
tomv3h2rvege3le
abcd2
, ab2de
, babbk
सभी एक ही? भी b1akk
मान्य है?
b1akk
मैं नहीं कहूँगा। स्पष्ट करने के लिए चुनौती विवरण में इसे संपादित करेंगे। यदि पहला वर्ण एक है, तो कोई अंक मौजूद नहीं होना चाहिए।
"a??"
676 संभव परिणाम है, लेकिन "1a?"
, "?a1"
, "2?a"
, "?2a"
, है only104 का परिणाम है। इसलिए, अगर मैं इन सभी 780 परिणामों में से एक परिणाम को चुनने की कोशिश कर रहा हूं, तो "enciphered letter" की स्थिति का वितरण 13: 1: 1 है, न कि 1: 1: 1। और मैं इस पर विचार करूंगा कि "समान रूप से यादृच्छिक" कैसे काम करें।