Euler_79.cpp (977B)
1 #include <algorithm> 2 #include <fstream> 3 #include <set> 4 5 #include "Euler.h" 6 7 std::string Euler::PasscodeDerivation() 8 { 9 std::ifstream fin; 10 std::vector<std::string> numbers; 11 12 fin.open("files/p079_keylog.txt"); 13 14 std::string temp; 15 while(std::getline(fin, temp)) 16 numbers.push_back(temp); 17 18 fin.close(); 19 20 std::set<char> tokens; 21 22 for (std::string n : numbers) 23 for (char c : n) 24 tokens.insert(c); 25 26 std::string passcode(tokens.begin(),tokens.end()); 27 28 for (std::string n : numbers) 29 { 30 int i = std::find(passcode.begin(), passcode.end(), n[0]) - passcode.begin(); 31 int j = std::find(passcode.begin(), passcode.end(), n[1]) - passcode.begin(); 32 int k = std::find(passcode.begin(), passcode.end(), n[2]) - passcode.begin(); 33 34 if (i > j) 35 std::swap(passcode[i], passcode[j]); 36 37 if (j > k) 38 std::swap(passcode[j], passcode[k]); 39 } 40 41 return passcode; 42 }