HaciyevAlik

Queen,Rook and Knight

Aug 12th, 2022
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.20 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. using ll = long long;
  5. using ld = long double;
  6. const int INF = 1e9;
  7.  
  8. int color[15][15];
  9. pair<int,int> q,r,n;
  10. int ans = 0;
  11.  
  12. void rook();
  13. void queen();
  14. void knight();
  15.  
  16. int main(){
  17.     ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
  18.     string a,b,c;
  19.     cin>>a;
  20.     //1ci str
  21.     if(a[0] == 'Q'){
  22.         int x = (a[1] - 96);
  23.         int y = (a[2] - '0');
  24.         q.first = x;
  25.         q.second = y;
  26.     } else if(a[0] == 'R'){
  27.         int x = (a[1] - 96);
  28.         int y = (a[2] - '0');
  29.         r.first = x;
  30.         r.second = y;
  31.     } else {
  32.         int x = (a[1] - 96);
  33.         int y = (a[2] - '0');
  34.         n.first = x;
  35.         n.second = y;
  36.     }
  37.    
  38.     cin>>b;
  39.     //2ci str
  40.     if(b[0] == 'Q'){
  41.         int x = (b[1] - 96);
  42.         int y = (b[2] - '0');
  43.         q.first = x;
  44.         q.second = y;
  45.     } else if(b[0] == 'R'){
  46.         int x = (b[1] - 96);
  47.         int y = (b[2] - '0');
  48.         r.first = x;
  49.         r.second = y;
  50.     } else {
  51.         int x = (b[1] - 96);
  52.         int y = (b[2] - '0');
  53.         n.first = x;
  54.         n.second = y;
  55.     }
  56.  
  57.     cin>>c;
  58.     //3cu str;
  59.     if(c[0] == 'Q'){
  60.         int x = (c[1] - 96);
  61.         int y = (c[2] - '0');
  62.         q.first = x;
  63.         q.second = y;
  64.     } else if(c[0] == 'R'){
  65.         int x = (c[1] - 96);
  66.         int y = (c[2] - '0');
  67.         r.first = x;
  68.         r.second = y;
  69.     } else {
  70.         int x = (c[1] - 96);
  71.         int y = (c[2] - '0');
  72.         n.first = x;
  73.         n.second = y;
  74.     }
  75.    
  76.     rook();
  77.     knight();
  78.     queen();
  79.     for(int i = 1;i<=8;i++){
  80.         for(int j = 1;j<=8;j++){
  81.             if(color[i][j] == 1){
  82.                 ans++;
  83.             }
  84.         }
  85.     }
  86.     cout << ans << "\n";
  87.     return 0;
  88. }
  89.  
  90. void rook(){
  91.     int x,y;
  92.     x = r.first;
  93.     y = r.second;
  94.     while(x <= 8){
  95.         x++;
  96.         if((x == n.first && y == n.second) || (x == q.first && y == q.second)){
  97.             break;
  98.         } else {
  99.             color[x][y] = 1;
  100.         }
  101.     }
  102.     x = r.first;
  103.     y = r.second;
  104.     while(x >= 1){
  105.         x--;
  106.         if((x == n.first && y == n.second) || (x == q.first && y == q.second)){
  107.             break;
  108.         } else {
  109.             color[x][y] = 1;
  110.         }
  111.     }
  112.     x = r.first;
  113.     y = r.second;
  114.     while(y <= 8){
  115.         y++;
  116.         if((x == n.first && y == n.second) || (x == q.first && y == q.second)){
  117.             break;
  118.         } else {
  119.             color[x][y] = 1;
  120.         }
  121.     }
  122.     x = r.first;
  123.     y = r.second;
  124.     while(y >= 1){
  125.         y--;
  126.         if((x == n.first && y == n.second) || (x == q.first && y == q.second)){
  127.             break;
  128.         } else {
  129.             color[x][y] = 1;
  130.         }
  131.     }
  132. }
  133.  
  134. void knight(){
  135.     int x = n.first;
  136.     int y = n.second;
  137.     if(x - 2 >= 1 && y + 1 <= 8 && (x - 2 != q.first && y + 1 != q.second) && (x - 2 != r.first && y + 1 != r.second)){
  138.         color[x-2][y+1] = 1;
  139.     }
  140.     if(x - 2 >= 1 && y - 1 >= 1 && (x - 2 != q.first && y - 1 != q.second) && (x - 2 != r.first && y - 1 != r.second)){
  141.         color[x-2][y-1] = 1;
  142.     }
  143.     if(x - 1 >= 1 && y - 2 >= 1 && (x - 1 != q.first && y - 2 != q.second) && (x - 1 != r.first && y - 2 != r.second)){
  144.         color[x-1][y-2] = 1;
  145.     }
  146.     if(x - 1 >= 1 && y + 2 <= 8 && (x - 1 != q.first && y + 2 != q.second) && (x - 1 != r.first && y + 2 != r.second)){
  147.         color[x-1][y+2] = 1;
  148.     }
  149.     if(x + 1 <= 8 && y - 2 >= 1 && (x + 1 != q.first && y - 2 != q.second) && (x + 1 != r.first && y - 2 != r.second)){
  150.         color[x+1][y-2] = 1;
  151.     }
  152.     if(x + 1 <= 8 && y + 2 <= 8 && (x + 1 != q.first && y + 2 != q.second) && (x + 1 != r.first && y + 2 != r.second)){
  153.         color[x+1][y+2] = 1;
  154.     }
  155.     if(x + 2 <= 8 && y - 1 >= 1 && (x + 2 != q.first && y - 1 != q.second) && (x + 2 != r.first && y - 1 != r.second)){
  156.         color[x+2][y-1] = 1;
  157.     }
  158.     if(x + 2 <= 8 && y + 1 <= 8 && (x + 2 != q.first && y + 1 != q.second) && (x + 2 != r.first && y + 1 != r.second)){
  159.         color[x+2][y+1] = 1;
  160.     }
  161. }
  162.  
  163. void queen(){
  164.     /* Queen - Rook start */
  165.     int x,y;
  166.     x = q.first;
  167.     y = q.second;
  168.     while(x <= 8){
  169.         x++;
  170.         if((x == n.first && y == n.second) || (x == r.first && y == r.second)){
  171.             break;
  172.         } else {
  173.             color[x][y] = 1;
  174.         }
  175.     }
  176.     x = q.first;
  177.     y = q.second;
  178.     while(x >= 1){
  179.         x--;
  180.         if((x == n.first && y == n.second) || (x == r.first && y == r.second)){
  181.             break;
  182.         } else {
  183.             color[x][y] = 1;
  184.         }
  185.     }
  186.     x = q.first;
  187.     y = q.second;
  188.     while(y <= 8){
  189.         y++;
  190.         if((x == n.first && y == n.second) || (x == r.first && y == r.second)){
  191.             break;
  192.         } else {
  193.             color[x][y] = 1;
  194.         }
  195.     }
  196.     x = q.first;
  197.     y = q.second;
  198.     while(y >= 1){
  199.         y--;
  200.         if((x == n.first && y == n.second) || (x == r.first && y == r.second)){
  201.             break;
  202.         } else {
  203.             color[x][y] = 1;
  204.         }
  205.     }
  206.     /* Queen - Rook finish */
  207.  
  208.     /* Queen - Bishop start */
  209.     x = q.first;
  210.     y = q.second;
  211.     while(x >= 1 && y >= 1){
  212.         x--;
  213.         y--;
  214.         if((x == n.first && y == n.second) || (x == r.first && y == r.second)){
  215.             break;
  216.         } else {
  217.             color[x][y] = 1;
  218.         }
  219.     }
  220.     x = q.first;
  221.     y = q.second;
  222.     while(x <= 8 && y <= 8){
  223.         x++;
  224.         y++;
  225.         if((x == n.first && y == n.second) || (x == r.first && y == r.second)){
  226.             break;
  227.         } else {
  228.             color[x][y] = 1;
  229.         }
  230.     }
  231.     x = q.first;
  232.     y = q.second;
  233.     while(x >= 1 && y <= 8){
  234.         x--;
  235.         y++;
  236.         if((x == n.first && y == n.second) || (x == r.first && y == r.second)){
  237.             break;
  238.         } else {
  239.             color[x][y] = 1;
  240.         }
  241.     }
  242.     x = q.first;
  243.     y = q.second;
  244.     while(x <= 8 && y >= 1){
  245.         x++;
  246.         y--;
  247.         if((x == n.first && y == n.second) || (x == r.first && y == r.second)){
  248.             break;
  249.         } else {
  250.             color[x][y] = 1;
  251.         }
  252.     }
  253.     /* Queen - Bishop finish */
  254. }
  255.  
  256. // Gözüm çıxdı :( --- Nolar 100% ol
Add Comment
Please, Sign In to add comment