Trong bài toán này, chúng ta được cho một chuỗi và phải tìm mã hóa số nguyên của nó sử dụng Polybius Square Cipher.
Polybius Square Cipher
Là một bảng dùng để chuyển đổi chữ cái thành số. Bảng cho tiếng Anh là bảng 5x5 (25 ô cho 26 chữ cái). Chữ I và J chung một ô.
Bảng Polybius Square Cipher sau đây:
| 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 |
Các chữ cái trong bảng có thể xáo trộn. Kích thước bảng có thể thay đổi tùy theo số chữ cái của ngôn ngữ.
Ví dụ minh họa:
Đầu vào - Hello
Kết quả - 2315313134
Để giải bài toán, tạo chương trình lấy từng cặp số và kiểm tra chữ cái tương ứng.
Chương trình minh họa
#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 << "Mã hóa số của chuỗi '" << str << "' là: ";
LetterToNumber(str);
return 0;
}
Kết quả
Mã hóa số của chuỗi 'tutorialspoint' là: 4445443442241131433534243344