Advertisement
AdrianMadajewski

robocik.cpp

Jan 30th, 2019
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <string>
  4. #include <fstream>
  5. #include <vector>
  6. #include <array>
  7. #include <climits>
  8.  
  9. int litery(std::string ruch)
  10. {
  11.     int len = ruch.length();
  12.     int dlugosc = 0;
  13.     int maxdlugosc = -1;
  14.  
  15.     for (int i = 0; i < len - 1; i++)
  16.     {
  17.         if (ruch[i] == 'E' || ruch[i] == 'W')
  18.                 dlugosc++;
  19.             else
  20.             {
  21.                 if (dlugosc > maxdlugosc)
  22.                     maxdlugosc = dlugosc;
  23.                 dlugosc = 0;
  24.             }
  25.     }
  26.     return maxdlugosc;
  27. }
  28.  
  29. int main()
  30. {
  31.     std::array<std::array<int, 20>, 20> tab;
  32.     std::ifstream plansza("plansza.txt");
  33.  
  34.     for (int i = 0; i < 20; i++)
  35.         for (int j = 0; j < 20; j++)
  36.             plansza >> tab[j][i];
  37.  
  38.     std::ifstream robot("robot.txt");
  39.     std::vector<std::string> ruchy;
  40.     std::string temp;
  41.  
  42.     for (int i = 0; i < 1000; i++)
  43.     {
  44.         robot >> temp;
  45.         ruchy.emplace_back(temp);
  46.     }
  47.  
  48.  
  49.     // std::cout << ruchy[2];
  50.     int maxwynik = INT_MIN;
  51.     int igracza = 0;
  52.     int dyskw = 0;
  53.  
  54.     int maxlitery = INT_MIN;
  55.     std::vector<int> gracze;
  56.  
  57.     // std::cout << tab[1][3] << std::endl;
  58.  
  59.     for (int i = 0; i < 1000; i++)
  60.     {
  61.         /* Nowy gracz */
  62.         int wynik = tab[0][0];
  63.         int rx = 0;
  64.         int ry = 0;
  65.  
  66.         int len = ruchy[i].length();
  67.  
  68.         for (int j = 0; j < len; j++)
  69.         {
  70.             char ruch = ruchy[i][j];
  71.  
  72.             switch (ruch)
  73.             {
  74.             case 'N':
  75.                 ry--;
  76.                 break;
  77.             case 'S':
  78.                 ry++;
  79.                 break;
  80.             case 'W':
  81.                 rx--;
  82.                 break;
  83.             case 'E':
  84.                 rx++;
  85.                 break;
  86.             }
  87.  
  88.             /* Kolizja */
  89.             if (rx >= 20 || rx < 0 || ry >= 20 || ry < 0)
  90.             {
  91.                 dyskw++;
  92.                 wynik = -1;
  93.                 break;
  94.             }
  95.             else
  96.                 wynik += tab[ry][rx];
  97.  
  98.         }
  99.  
  100.         /* Najlepszy wynik */
  101.         if (wynik > maxwynik)
  102.         {
  103.             maxwynik = wynik;
  104.             igracza = i + 1;
  105.         }
  106.  
  107.         /* Ciag znakow */
  108.         int litera = litery(ruchy[i]);
  109.         if (litera > maxlitery)
  110.         {
  111.             maxlitery = litera;
  112.             gracze.clear();
  113.         }
  114.         if (litera == maxlitery)
  115.             gracze.emplace_back(i + 1);
  116.     }
  117.  
  118.     // std::cout << litery("ENEEWENSSESSWSWESWNN");
  119.  
  120.     std::cout << "dyskwalifikacja: " << dyskw << std::endl;
  121.     std::cout << "maxwynik: " << maxwynik << " - gracz: " << igracza << std::endl;
  122.     for (auto &gracz : gracze)
  123.         std::cout << gracz << " ";
  124.     std::cout << "-> max: " << maxlitery << std::endl;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement