ソースコード
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <algorithm>
#include <utility>
#include <functional>
#include <cstring>
#include <queue>
#include <stack>
#include <math.h>
#include <iterator>
#include <vector>
#include <string>
#include <set>
#include <math.h>
#include <iostream>
#include <random>
#include<map>
#include <iomanip>
#include <time.h>
#include <stdlib.h>
#include <list>
#include <typeinfo>
#include <list>
#include <set>
#include <cassert>
#include<fstream>
#include <unordered_map>
using namespace std;
#define eps 0.00000001
#define LONG_INF 10000000000000000
#define GOLD 1.61803398874989484820458
#define MAX_MOD 1000000007
#define f(n) for(int i=0;i<n;++i)
#define REP(i,n) for(long long i = 0;i < n;++i)
map<pair<int, int>, int> grid;
pair<int, int> vary[8] = { {1,0},{1,1},{1,-1},{0,1},{0,-1},{-1,-1},{-1,0},{-1,1} };
pair<int, int> sum(pair<int, int> a, pair<int, int> b) {
return make_pair(a.first + b.first, a.second + b.second);
}
int main() {
REP(i, 8) {
string s;
cin >> s;
REP(q, 8) {
if (s[q] == 'b') {
grid[make_pair(i, q)] = 1;
}else if(s[q] == 'w'){
grid[make_pair(i, q)] = 2;
}
}
}
int num;
cin >> num;
string s;
cin >> s;
pair<int, int> now = {s[1]-'1',s[0] - 'A'};
grid[now] = num + 1;
for (int i = 0;i < 8;++i) {
pair<int, int> copy = now;
while (true) {
copy = sum(copy, vary[i]);
if (grid[copy] == 0) goto failed;
if (grid[copy] == num + 1) break;
}
copy = now;
while (true) {
copy = sum(copy, vary[i]);
if (grid[copy] == 0) goto failed;
if (grid[copy] == num + 1) break;
grid[copy] = num+1;
}
failed:;
}
for (int i = 0;i < 8;++i) {
for (int q = 0;q < 8;++q) {
if (grid[make_pair(i, q)] == 0) {
cout << "-";
}else if(grid[make_pair(i,q)] == 1){
cout << "w";
}
else cout << "b";
}
cout << endl;
}
return 0;
}