有没有人能压缩一下输出, 四种压成一种, 不用宏, 现在看起来不太美观
#include <bits/stdc++.h>
#define int long long
using namespace std;
struct Mat {
vector<vector<int>> dat;
int situ; // -1 0 1 2 -> 0 1 2 3
Mat(auto dat, int situ) : dat(dat), situ(situ) {}
friend ostream &operator<< (ostream& os, const Mat &a) {
int sz = a.dat.size();
switch (a.situ) {
case 0: {
for (int i = 0; i < sz; ++i) for (int j = 0; j < sz; ++j)
os << a.dat[i][j] << " \n"[j == sz - 1];
break;
}
case 1: {
for (int j = 0; j < sz; ++j) for (int i = sz - 1; i >= 0; --i)
os << a.dat[i][j] << " \n"[i == 0];
break;
}
case 2: {
for (int i = sz - 1; i >= 0; --i) for (int j = sz - 1; j >= 0; --j)
os << a.dat[i][j] << " \n"[j == 0];
break;
}
case 3: {
for (int j = sz - 1; j >= 0; --j) for (int i = 0; i < sz; ++i)
os << a.dat[i][j] << " \n"[i == sz - 1];
break;
}
}
return os;
}
};
void solve() {
int n, m; cin >> n >> m;
vector<vector<int>> dat(n, vector<int>(n, 0));
for (auto &row : dat) for (auto &v : row) cin >> v;
Mat a(dat, 0);
for (int _ = 1, opt; _ <= m; ++_) {
cin >> opt;
if (opt == 1) a.situ = (a.situ + 1) % 4;
if (opt == 2) a.situ = (a.situ + 3) % 4;
if (opt == 3) a.situ = (a.situ + 2) % 4;
cout << a << "\n";
}
}
signed main() {
std::cin.tie(nullptr) -> sync_with_stdio(false);
// int t; cin >> t; while (t--)
solve();
}