vlatkovski

Sah (shah, шах)

Jun 3rd, 2017
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.20 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. int bukvaDoBroj(char c) {
  7.     //I am aware of || and && but it wouldn't work for some reason??
  8.     if      (c == 'a') return 1;
  9.     else if (c == 'b') return 2;
  10.     else if (c == 'c') return 3;
  11.     else if (c == 'd') return 4;
  12.     else if (c == 'e') return 5;
  13.     else if (c == 'f') return 6;
  14.     else if (c == 'g') return 7;
  15.     else if (c == 'h') return 8;
  16.     return -1;
  17. }
  18.  
  19. int main() {
  20.     char c;
  21.     int r, n;
  22.     cin >> c >> r >> n;
  23.  
  24.     int ci = bukvaDoBroj(c); //c int
  25.  
  26.     /*
  27.         pozicija na konj: (c, r) [kolona i red]
  28.         napadni pozicii: (c+2, r+1) (c+1, r+2) (c-1, r+2) (c-2, r+1) (c-2, r-1) (c-1, r-2) (c+1, r-2) (c+2, r-1)
  29.     */
  30.  
  31.     //NAOGANJE NA NAPADNITE POZICII
  32.     vector<pair<int, int>> napadniPoz;
  33.     int relPoz[8][2] = {
  34.         {2, 1}, {1, 2}, {-1, 2}, {-2, 1}, {-2, -1}, {-1, -2}, {1, -2}, {2, -1}
  35.     };
  36.     for (int i = 0; i < 8; i++) {
  37.         //ako sekoja potencijalna pozicija ne e nadvor od granicite na sahovnata tabla, dodaj ja vo napadniPoz
  38.         int c1 = ci + relPoz[i][0];
  39.         int r1 = r + relPoz[i][1];
  40.  
  41.         if (c1 < 9 && c1 > 0 && r1 < 9 && r1 > 0) {
  42.             napadniPoz.push_back(make_pair(c1, r1));
  43.         }
  44.     }
  45.  
  46.     /*
  47.     cout << "konj: c=" << ci << "; r=" << r << endl;
  48.     for (unsigned int i = 0; i < napadniPoz.size(); i++) {
  49.         cout << "napadna pozicija: c=" << napadniPoz[i].first << "; r=" << napadniPoz[i].second << endl;
  50.     }
  51.     */
  52.  
  53.     int napadnati = 0;
  54.  
  55.     //ZEMANJE NA POZICIITE NA NEPRIJATELITE I ODLUCUVANJE DALI MOZAT DA BIDAT NAPADNATI
  56.     for (int i = 0; i < n; i++) {
  57.         char m; //kolona
  58.         int k; //red
  59.         cin >> m >> k;
  60.  
  61.         int mi = bukvaDoBroj(m); //m int
  62.  
  63.         //cout << "neprijatel: m=" << mi << "; k=" << k << endl;
  64.  
  65.         for (unsigned int npi = 0; npi < napadniPoz.size(); npi++) { //npi = napadna pozicija index
  66.             pair<int, int> np = napadniPoz[npi];
  67.  
  68.             if (np.first == mi && np.second == k) { //ako koordinatite na napadnata pozicija se ednakvi so koord. na neprijatelot
  69.                 napadnati++;
  70.             }
  71.         }
  72.     }
  73.  
  74.     cout << napadnati << endl;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment