-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEnigmaMachine.cpp
More file actions
22 lines (18 loc) · 1 KB
/
EnigmaMachine.cpp
File metadata and controls
22 lines (18 loc) · 1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "EnigmaMachine.h"
EnigmaMachine::EnigmaMachine(const std::list<Rotor>& rotorList, const std::string ringSettings,
const std::string startPositions, const Scrambler* entry, const Scrambler* reflector, const std::string plugboardString)
: rotorComplex(rotorList, ringSettings, startPositions, entry, reflector), plugboard(plugboardString) {}
EnigmaMachine::EnigmaMachine(const std::list<Rotor>& rotorList, const Scrambler* entry, const Scrambler* reflector)
: rotorComplex(rotorList, entry, reflector), plugboard("") {}
void EnigmaMachine::setSettings(const std::string startPositions, const std::string ringSettings,
const std::string plugboardString) {
plugboard = Plugboard(plugboardString);
rotorComplex.setSettings(ringSettings, startPositions);
}
std::string EnigmaMachine::process(std::string input) {
std::string output;
for(auto inputChar : input) {
output += plugboard.scramble(rotorComplex.scramble(plugboard.scramble(inputChar)));
}
return output;
}