ในปัญหานี้ เราได้รับสตริงและเราต้องหาการเข้ารหัสจำนวนเต็มโดยใช้ Polybius Square Cipher .
Polybius Square Cipher
เป็นตารางที่ใช้แปลงตัวอักษรเป็นตัวเลข ตารางสำหรับการเข้ารหัสภาษาอังกฤษเป็นตารางขนาด 5X5 เช่น มี 25 เซลล์สำหรับตัวอักษร 26 ตัวในพจนานุกรมภาษาอังกฤษ ตัวอักษร i และ j ถูกเก็บไว้ในเซลล์เดียว
ตารางต่อไปนี้แสดง Polybius square Cipher −
| 1 | 2 | 3 | 4 | 5 |
1 | A | B | C | D | E |
2 | F | G | H | ฉัน, J | K |
3 | L | M | N | O | P |
4 | Q | R | S | T | U |
5 | V | W | X | Y | Z |
จดหมายของตารางสามารถสุ่มได้ นอกจากนี้ ขนาดของตารางยังสามารถเปลี่ยนแปลงได้ตามจำนวนตัวอักษรของภาษา
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล − สวัสดี
ผลลัพธ์ − 2315313134
เพื่อแก้ปัญหานี้ เราจะสร้างโปรแกรมนำตัวเลขแต่ละคู่มาตรวจหาตัวอักษรที่เกี่ยวข้องกัน
ตัวอย่าง
โปรแกรมแสดงภาพประกอบของโซลูชันของเรา -
#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