Advertisement
K_Y_M_bl_C

E

May 22nd, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. #define grid_side 6
  8. #define grid_square 36
  9.  
  10. string sometext, block, ans;
  11. string grid[grid_side];
  12. char res[grid_side][grid_side];
  13.  
  14. int position;
  15.  
  16. void rotate_right(string grid[]) {
  17.  
  18.     string temp[grid_side];
  19.  
  20.     for (int i = 0; i < grid_side; i++)
  21.         temp[i].clear();
  22.  
  23.     for (int i = 0; i < grid_side; i++) {
  24.         for (int j = grid_side - 1; j >=0; j--) {
  25.             temp[i] = temp[i] + grid[j].substr(i, 1);
  26.         }
  27.     }
  28.  
  29.     for (int i = 0; i < grid_side; i++)
  30.         grid[i] = temp[i];
  31.  
  32. }
  33.  
  34. void put_res(char res[grid_side][grid_side], string block, int &position) {
  35.  
  36.     for (int i=0; i < grid_side; i++)
  37.         for (int j=0; j < grid_side; j++)
  38.             if (grid[i][j]=='.') {
  39.                 res[i][j] = block[position];
  40.                 position++;
  41.             }
  42. }
  43.  
  44. void collect(string &ans, char res[grid_side][grid_side]) {
  45.     for (int i=0; i < grid_side; i++)
  46.         for (int j=0; j < grid_side; j++)
  47.                 ans = ans + res[i][j];
  48. }
  49.  
  50. int main()
  51. {
  52.  
  53.     //freopen("07", "rt", stdin);
  54.     //freopen("07.ans", "wt", stdout);
  55.  
  56.     getline(cin, sometext);
  57.     ans.clear();
  58.  
  59.     for (int i=0; i < grid_side; i++)
  60.         getline(cin, grid[i]);
  61.  
  62.     while (sometext.length() >= grid_square) {
  63.         block = sometext.substr(0, grid_square);
  64.         position = 0;
  65.         sometext.erase(0, grid_square);
  66.  
  67.         for (int i = 1; i <= 4; i++) {
  68.             put_res(res, block, position);
  69.             rotate_right(grid);
  70.         }
  71.         collect(ans, res);
  72.     }
  73.  
  74.     if (sometext.length() > 0) ans = ans + sometext;
  75.  
  76.     cout << ans << endl;
  77.  
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement