62 lines
1.7 KiB
C
62 lines
1.7 KiB
C
#define ALPHABET_SIZE 26
|
||
#define WHEELS_AMOUNT 3
|
||
|
||
// Латинский алфавит в HEX представлении
|
||
const String key_values[ALPHABET_SIZE] =
|
||
{
|
||
"51", // Code51 - q
|
||
"57", // Code57 - w
|
||
"45", // Code45 - e
|
||
"52", // Code52 - r
|
||
"54", // Code54 - t
|
||
"59", // Code59 - y
|
||
"55", // Code55 - u
|
||
"49", // Code49 - i
|
||
"4F", // Code4F - o
|
||
"50", // Code50 - p
|
||
"41", // Code41 - a
|
||
"53", // Code53 - s
|
||
"44", // Code44 - d
|
||
"46", // Code46 - f
|
||
"47", // Code47 - g
|
||
"48", // Code48 - h
|
||
"4A", // Code4A - j
|
||
"4B", // Code4B - k
|
||
"4C", // Code4C - l
|
||
"5A", // Code5A - z
|
||
"58", // Code58 - x
|
||
"43", // Code43 - c
|
||
"56", // Code56 - v
|
||
"42", // Code42 - b
|
||
"4E", // Code4E - n
|
||
"4D" // Code4D - m
|
||
};
|
||
|
||
// Сдвиг в алфавите для каждого из "дисков".
|
||
// Обязан быть в отрезке [0; 25], так как полный круг
|
||
// возвращает значение обратно в 0.
|
||
// Таким образом, при конфигурации { 1, 2, 5 } и
|
||
// нажатой ' d ' сначала произойдёт сдвиг на 1, ' d '
|
||
// станет ' f ', потом на 2, ' f ' станет ' h ',
|
||
// в конце ещё сдвиг на 5 и ' h ' станет ' x '.
|
||
const size_t key_shifts[WHEELS_AMOUNT] =
|
||
{
|
||
1,
|
||
2,
|
||
5
|
||
};
|
||
|
||
// Соединение на коммутационной панели
|
||
struct Plug
|
||
{
|
||
size_t left_index = 0;
|
||
size_t right_index = 0;
|
||
};
|
||
|
||
// Все соединения коммутационной панели.
|
||
// Для примера всего 2, но может быть до 13
|
||
const Plug plugboard[2] =
|
||
{
|
||
{0, 1}, // ' q ' <- -> ' w '
|
||
{4, 10} // ' t ' <- -> ' a '
|
||
}; |