project-euler

https://projecteuler.net/
Log | Files | Refs | README

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 }