Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <string>
- using namespace std;
- #define grid_side 6
- #define grid_square 36
- string sometext, block, ans;
- string grid[grid_side];
- char res[grid_side][grid_side];
- int position;
- void rotate_right(string grid[]) {
- string temp[grid_side];
- for (int i = 0; i < grid_side; i++)
- temp[i].clear();
- for (int i = 0; i < grid_side; i++) {
- for (int j = grid_side - 1; j >=0; j--) {
- temp[i] = temp[i] + grid[j].substr(i, 1);
- }
- }
- for (int i = 0; i < grid_side; i++)
- grid[i] = temp[i];
- }
- void put_res(char res[grid_side][grid_side], string block, int &position) {
- for (int i=0; i < grid_side; i++)
- for (int j=0; j < grid_side; j++)
- if (grid[i][j]=='.') {
- res[i][j] = block[position];
- position++;
- }
- }
- void collect(string &ans, char res[grid_side][grid_side]) {
- for (int i=0; i < grid_side; i++)
- for (int j=0; j < grid_side; j++)
- ans = ans + res[i][j];
- }
- int main()
- {
- //freopen("07", "rt", stdin);
- //freopen("07.ans", "wt", stdout);
- getline(cin, sometext);
- ans.clear();
- for (int i=0; i < grid_side; i++)
- getline(cin, grid[i]);
- while (sometext.length() >= grid_square) {
- block = sometext.substr(0, grid_square);
- position = 0;
- sometext.erase(0, grid_square);
- for (int i = 1; i <= 4; i++) {
- put_res(res, block, position);
- rotate_right(grid);
- }
- collect(ans, res);
- }
- if (sometext.length() > 0) ans = ans + sometext;
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement