#include "header.hpp" #include class Solution { public: static std::vector> shiftGrid(std::vector> &grid, int k) { if (k == 0) { return grid; } auto row_count = grid.size(); auto col_count = grid[0].size(); std::vector> result; result.resize(row_count); for (auto &iter : result) { iter.resize(col_count); } /* if (k % grid.size() == 0) { */ /* for (auto &iter : grid) { */ /* std::copy(iter.begin(), iter.end(), */ /* result[((k % grid[0].size()) - 1) % grid.size()].begin()); */ /* } */ /* } */ for (int i = 0; i < row_count; ++i) { for (int j = 0; j < col_count; ++j) { auto index = ((col_count * i + j + k)) % (col_count * row_count) + 1; auto new_row = std::ceil(static_cast(index) / static_cast(col_count)); auto new_col = index - ((new_row - 1) * col_count); result[new_row - 1][new_col - 1] = grid[i][j]; std::cout << "index:" << index << " new:" << new_row << "," << new_col << "\n"; } } return result; } }; void pprint(std::vector> &&grid) { for (auto &iter : grid) { for (auto &ya_iter : iter) { std::cout << ya_iter << " "; } std::cout << "\n"; } std::cout << "\n"; } int main(int argc, char **argv) { std::vector> grid1 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; std::vector> grid2 = { {3, 8, 1, 9}, {19, 7, 2, 5}, {4, 6, 11, 10}, {12, 0, 21, 13}}; std::vector> grid3 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; pprint(Solution::shiftGrid(grid1, 1)); pprint(Solution::shiftGrid(grid2, 4)); pprint(Solution::shiftGrid(grid3, 9)); return 0; }