Paso 8: El código: rotores
const char rI [26] = {'E',
'K',
SOY ',
'F',
'L',
'G',
HABÍA ',
'Q',
'V',
'Z',
' N ',
' T ',
' O ',
'W',
'Y',
'H',
'X',
'U',
DE ',
'P',
'A',
'I',
'B',
'R',
'C',
'J'};
const char rII [26] = {'A',
'J',
HABÍA ',
'K',
DE ',
'I',
'R',
'U',
'X',
'B',
'L',
'H',
'W',
' T ',
SOY ',
'C',
'Q',
'G',
'Z',
' N ',
'P',
'Y',
'F',
'V',
' O ',
'E'};
char la rIII [26] = {'B',
HABÍA ',
'F',
'H',
'J',
'L',
'C',
'P',
'R',
' T ',
'X',
'V',
'Z',
' N ',
'Y',
'E',
'I',
'W',
'G',
'A',
'K',
SOY ',
'U',
DE ',
'Q',
'O'};
Puede preguntar "por qué no solo definirlos como una cadena, esto parece de mano". En otras palabras, por qué no hacerlo como esta:
char el rotI [26] = "" EKMFLGDQVZNTOWYHXUSPAIBRCJ "
Admito esto hace mucho más código, pero para mí tiene más sentido visualmente para ver hacia abajo (no puedo pensar en un tiempo que he hecho esto antes, pero con esto creo que funciona). Básicamente ya que estas son rotores (me copia de los valores de una máquina de papel de Enigma) entonces que es lo que elegí para hacerlo.
Además de definir los reflectores definí qué número cada rotor debe encender el rotor siguiente. En otras palabras, cuando RI está en la posición 17, debe girar el rotor a la izquierda.
const int spinRI = 17;
const int spinRII = 5;
const int spinRIII = 22;
Porque los rotores se pueden poner en cualquiera de las tres ranuras que ves en la pantalla copiar los valores de giro constante en enteros que cambian en cualquier momento un rotor diferente se pone en una ranura (r1 es la izquierda la mayoría rotor, r2 es el rotor de centro, r3 es el derecha rotor más).
int spin_r1 = spinRI;
int spin_r2 = spinRII;
int spin_r3 = spinRIII;
Seguimiento de las siguientes variables que el rotor es en qué ranura. Se utiliza para saber cuando cambiar rotores en una ranura que rotor siguiente será
int cur_r1 = 1;
int cur_r2 = 2;
int cur_r3 = 3;
También definir el reflector. Básicamente lo que esto dice es si una entrada viene en la posición 3, entonces debe ir hacia atrás posición 7 por ejemplo (ya que el valor en la posición 3 7). El reflector básicamente envía la señal a través de los rotores en orden inverso
reflector int [26] = {24,
17,
20,
7,
16,
18,
11,
3,
15,
23,
13,
6,
14,
10,
12,
8,
4,
1,
5,
25,
2,
22,
21,
9,
0,
19};
Estos son marcadores de posición de la matriz actual del rotor en las posiciones 1, 2 y 3 en la pantalla
char rotor1 [26];
char rotor2 [26];
char rotor3 [26];
Nota: La imagen en este paso es de Wikipedia