यहाँ अंग्रेजी वर्णमाला के अक्षर क्रम से हैं:
e t a o i n s h r d l c u m w f g y p b v k j x q z
यही है, e
सबसे अधिक इस्तेमाल किया जाने वाला पत्र है, और z
कम से कम सामान्य है। ( विकिपीडिया से डेटा ।)
आपकी चुनौती कुछ ROT-n'd पाठ लेने की है, जैसे:
ocdndnvqzmtnzxmzohznnvbzocvodnqzmtnzxpmzviynvaz
यह ROT-21 (42 का आधा) के माध्यम से "एनक्रिप्टेड" है कि "thisisaverysecretmessagetisverysecureandsafe" पाठ है। आपका प्रोग्राम, ऊपर की आवृत्ति तालिका का उपयोग करके, यह निर्धारित करने में सक्षम होना चाहिए कि प्रत्येक वर्ण को कितना घुमाया गया था और मूल पाठ।
(यदि आप ROT-n से परिचित नहीं हैं, तो यह अनिवार्य रूप से प्रत्येक वर्ण को शिफ्ट कर रहा है n
। उदाहरण के लिए, ROT-2 में a -> c, b -> d, ..., x -> z, y -> a, z -> b
।)
कैसे, आप पूछें? (बहुत भोली) एल्गोरिथ्म जो आपको उपयोग करना चाहिए वह है:
- प्रत्येक के लिए
n
से0
करने के लिए25
समावेशी, ROT- लागू-n
इनपुट स्ट्रिंग के लिए। (नकारात्मकn
क्योंकि हम एन्क्रिप्शन को उलटना चाहते हैं । ROT- ROT--n
के बराबर है26-n
, अगर यह कोई आसान है।) - वर्णों के सापेक्ष आवृत्तियों को जोड़कर प्रत्येक इनपुट स्ट्रिंग को संख्या में परिवर्तित करें।
e
है0
,t
है1
,a
है2
आदि उदाहरण के लिए, स्ट्रिंग के लिए इसी नंबर"hello"
7 + 0 + 10 + 10 + 3 = 30 है। - वह स्ट्रिंग ढूंढें जिसमें सबसे कम संख्या हो।
- उत्पादन कि स्ट्रिंग और इसके अनुरूप
n
।
नियम:
- इनपुट कहीं भी वाजिब हो सकता है (STDIN, फंक्शन आर्ग्युमेंट्स, किसी फाइल आदि से), और इसलिए आउटपुट (STDOUT, फंक्शन रिटर्न वैल्यू, फाइल के लिए इत्यादि) कर सकता है।
- आप एक अलग एल्गोरिथ्म का उपयोग कर सकते हैं, जब तक कि यह हमेशा समान परिणाम उत्पन्न करता है। उदाहरण के लिए,
z
0 होना औरe
25 होना और उच्चतम संख्या चुनना भी ठीक है। - यदि दो तारों में समान स्कोर हैं, तो आप उनमें से किसी एक (या दोनों) को आउटपुट करना चुन सकते हैं। यह एक एज केस है और आपको इसका हिसाब नहीं रखना है।
- यह कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा कोड जीत जाएगा!
परीक्षण के मामलों:
इनपुट: ocdndnvqzmtnzxmzohznnvbzocvodnqzmtnzxpmzviynvaz
आउटपुट:21 thisisaverysecretmessagethatisverysecureandsafe
इनपुट: pmttwxmwxtmwnxzwoziuuqvoxchhtmakwlmowtnabiksmfkpivom
आउटपुट:8 hellopeopleofprogrammingpuzzlescodegolfstackexchange
इनपुट: ftueimeqzodkbfqpiuftdaffiqxhqeaufygefnqbqdrqofxkemrq
आउटपुट:12 thiswasencryptedwithrottwelvesoitmustbeperfectlysafe
इनपुट: jgtgkuvjghkpcnvguvecugvjcvaqwowuvfgetarv
आउटपुट:2 hereisthefinaltestcasethatyoumustdecrypt
यदि आप सोच रहे थे, तो यहां जावास्क्रिप्ट परीक्षण कोड का एक JSFiddle मैंने लिखा है, जो मैंने उस पर फेंकने वाले सभी परीक्षण मामलों को सफलतापूर्वक डिक्रिप्ट किया है।
wtaad
देना चाहिए0 wtaad
परिणाम के रूप में, औरvszzc
देना चाहिए25 wtaad
परिणाम के रूप में।