Advertisement
Faschz

Animal Crossing - Code Optimizer

Apr 13th, 2015
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <string>
  5.  
  6. using namespace std;
  7. int calcDistance(string code);
  8.  
  9. int main(){
  10.     string code;
  11.     const string codeFilename = "codes.txt";
  12.     ifstream infile;
  13.  
  14.     infile.open(codeFilename);
  15.     if (!infile)
  16.     {
  17.         cout << "The input file does not exist." << endl;
  18.     }
  19.     else
  20.     {
  21.         cout << "Code\t\t\t\t\tDistance" << endl;
  22.         getline(infile, code, '\n');
  23.         while (infile)
  24.         {
  25.             cout << code << "\t\t" << calcDistance(code) << endl;
  26.             getline(infile, code, '\n');
  27.         }
  28.  
  29.         infile.close();
  30.     }
  31.     system("pause");
  32.     return 0;
  33. }
  34.  
  35. int calcDistance(string code){
  36.     int distance = 0;
  37.     int yPosition = 1;
  38.     int xPosition = 0;
  39.     int changeX;
  40.     int changeY;
  41.  
  42.     vector<vector <char>> alphabet{
  43.         { '1', '2', '3', '4', '5', '6', '7', '8', '9' },
  44.         { 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p' },
  45.         { 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l' },
  46.         { 'z', 'x', 'c', 'v', 'b', 'n', 'm' }
  47.     };
  48.    
  49.     for (int i = 0; i < code.length(); i++){
  50.         for (vector<vector<char>>::size_type j = 0; j < alphabet.size(); j++)
  51.         {
  52.             for (vector<char>::size_type k = 0; k < alphabet[j].size(); k++)
  53.             {
  54.                 if (alphabet[j][k] == code[i]){
  55.                     changeX = j - xPosition;
  56.                     changeY = k - yPosition;
  57.                     if (j != xPosition && k != yPosition){
  58.                         if (abs(changeX)>abs(changeY)){
  59.                             //cout << changeX << endl;
  60.                             distance += abs(changeX);
  61.                             yPosition = k;
  62.                             xPosition = j;
  63.                         }
  64.                         else{
  65.                             //cout << changeY << endl;
  66.                             distance += abs(changeY);
  67.                             yPosition = k;
  68.                             xPosition = j;
  69.                         }
  70.                     }
  71.  
  72.                     else if (j != xPosition){
  73.                         //cout << changeX << endl;
  74.                         distance += abs(changeX);
  75.                         yPosition = k;
  76.                         xPosition = j;
  77.                     }
  78.  
  79.                     else if (k != yPosition){
  80.                         //cout << changeY << endl;
  81.                         distance += abs(changeY);
  82.                         yPosition = k;
  83.                         xPosition = j;
  84.                     }
  85.                 }
  86.             }
  87.         }
  88.     }
  89.     return distance;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement