विवरण
सीज़र शिफ्ट एक बहुत ही सरल मोनोफैबेटिक सेफ़र है जहां वर्णमाला के बाद प्रत्येक अक्षर को एक के बाद एक बदल दिया जाता है। उदाहरण:
Hello world! -> IFMMP XPSME!
( IBSLR, EGUFV!
वास्तविक चुनौती के लिए आउटपुट है, यह 1. द्वारा स्थानांतरण का एक उदाहरण था)
जैसा कि आप देख सकते हैं, रिक्ति और विराम चिह्न अनासक्त हैं। हालाँकि, संदेश का अनुमान लगाने से रोकने के लिए, सभी अक्षरों को बड़े अक्षरों में लिखा गया है। पत्रों को वापस शिफ्ट करने से, संदेश को डिक्रिप्ड, सुविधाजनक, लेकिन अन्य व्यक्तियों द्वारा समझने के लिए वास्तव में आसान हो गया, जिन्हें यह पता नहीं है कि संदेश का क्या मतलब है।
इसलिए, हम अपने सिफर के उन्नत रूप का उपयोग करके सीज़र की थोड़ी मदद करेंगे: सेल्फ शिफ्टिंग सीज़र शिफ्ट !
चुनौती
आपका काम एक प्रोग्राम या फंक्शन लिखना है, जो एनरिशर को एक स्ट्रिंग देता है, इनपुट के अनुरूप एन्क्रिप्टेड स्ट्रिंग को आउटपुट करता है। उन्नत सीज़र शिफ्ट इस तरह काम करती है:
1. Compute letter differences of all adjacent letters:
1.1. Letter difference is computed like this:
Position of 2nd letter in the alphabet
-Position of 1st letter in the alphabet
=======================================
Letter difference
1.2. Example input: Hello
H - e|e - l|l - l|l - o
7 - 5|5 - 12|12 - 12|12 - 15 Letter differences: 3; -7; 0; -3
=3| =-7| =0| =-3
2. Assign the letters continously a letter difference from the list,
starting at the second letter and inverting the differences:
2.1. 2nd letter: first difference, 3rd letter: second difference, etc.
2.2. The first letter is assigned a 1.
2.3. Example input: Hello with differences 3; -7; 0; -3
Letter || Value
=======||======
H || 1
E || -3
L || 7
L || 0
O || 3
3. Shift the letters by the value x they have been assigned:
3.1. In case of a positive x, the letter is shifted x letters to the right.
3.2. In case of a negative x, the letter is shifted |x| letters to the left.
3.3. In case of x = 0, the letter is not shifted.
3.4. If the shift would surpass the limits of the alphabet, it gets wrapped around
Example: Y + Shift of 2 --> A
3.5. Example input: See the table under 2.3.
|| || Shifted
Letter || Value || Letter
=======||=======||=========
H || 1 || I
E || -3 || B Program output:
L || 7 || S IBSLR
L || 0 || L
O || 3 || R
रिक्तियाँ और अन्य विशेष प्रतीक, जैसे विराम चिह्न इस प्रक्रिया में छोड़ दिए जाते हैं। यह गारंटी दी जाती है कि आपके प्रोग्राम को एक स्ट्रिंग दी जाएगी जिसमें केवल मुद्रण योग्य ASCII वर्ण होंगे। आपके फ़ंक्शन / प्रोग्राम का आउटपुट केवल ऊपरी मामले में होना चाहिए।
यह कोड-गोल्फ है , इसलिए मानक कमियां लागू होती हैं, और बाइट्स में सबसे कम जवाब जीत सकते हैं!
ZEN
, उदाहरण के लिए। Z
1 द्वारा स्थानांतरित किया गया है ... A
? (एक साइड नोट के रूप में, 05AB1E उत्तर में बदल जाता Z
है A
)
RELIEF
और RELIES
समान परिणाम के लिए दोनों तरह के शब्दों का मतलब था SRSFAG
?
E
-3
?