इस समस्या में, हमें एक स्ट्रिंग दी गई है और हमें पॉलीबियस स्क्वायर सिफर का उपयोग करके इसका पूर्णांक एन्क्रिप्शन खोजना होगा। ।
पॉलीबियस स्क्वायर सिफर
यह एक तालिका है जिसका उपयोग अक्षरों को संख्याओं में बदलने के लिए किया जाता है। अंग्रेजी एन्क्रिप्शन के लिए तालिका एक 5X5 तालिका है यानी इसमें एक अंग्रेजी शब्दकोश के 26 अक्षरों के लिए 25 सेल हैं। अक्षर i और j एक ही सेल में एक साथ रखे जाते हैं।
निम्न तालिका एक पॉलीबियस वर्ग सिफर दिखाती है -
| 1 | 2 | 3 | 4 | 5 |
1 | A | B | C | D | E |
2 | F | G | H | I, J | K |
3 | L | M | N | O | P |
4 | Q | R | S | T | U |
5 | V | W | X | Y | Z |
तालिकाओं के अक्षर को यादृच्छिक बनाया जा सकता है। साथ ही, भाषा के अक्षरों की संख्या के आधार पर तालिका का आकार बदला जा सकता है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट -नमस्कार
आउटपुट - 23153131334
इस समस्या को हल करने के लिए, हम प्रत्येक जोड़ी संख्याओं को लेने के लिए एक प्रोग्राम बनाएंगे और फिर संबंधित अक्षर की जांच करेंगे।
उदाहरण
हमारे समाधान का उदाहरण दिखाने के लिए कार्यक्रम -
#include <cmath> #include <iostream> using namespace std; void LetterToNumber(string str) { int R, C; for (int i = 0; str[i]; i++) { R = ceil((str[i] - 'a') / 5) + 1; C = ((str[i] - 'a') % 5) + 1; if (str[i] == 'k') { R = R - 1; C = 5 - C + 1; } else if (str[i] >= 'j') { if (C == 1) { C = 6; R = R - 1; } C = C - 1; } cout<<R<<C; } cout << endl; } int main() { string str = "tutorialspoint"; cout<<"The numeric encryption of string '"<<str<<"' is : "; LetterToNumber(str); return 0; }
आउटपुट
The numeric encryption of string 'tutorialspoint' is: 4445443442241131433534243344