公式
B - Langton's Takahashi 解説 by en_translator
Carefully do casework just as instructed in the sample code.
Depending on implementation, it may be good idea to use arrays that stores the delta of coordinates for each move, as in dx
and dy
in the sample code below.
Sample code
#include <bits/stdc++.h>
using namespace std;
int dx[] = { -1,0,1,0 }; int dy[] = { 0,1,0,-1 };
int main() {
int h, w, n;
cin >> h >> w >> n;
vector<vector<char>> ans(h, vector<char>(w, '.'));
int x = 0, y = 0, m = 0;
for (int _ = 0; _ < n; _++) {
if (ans[x][y] == '.') {
ans[x][y] = '#';
m++;
}
else {
ans[x][y] = '.';
m += 3;
}
m %= 4;
x += dx[m]; y += dy[m];
if (x < 0) x += h; if (x >= h) x -= h;
if (y < 0) y += w; if (y >= w) y -= w;
}
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
cout << ans[i][j];
}
cout << '\n';
}
}
投稿日時:
最終更新: