JAG 模擬国内予選 2016: B - jfen
コンテスト中に書いた。
solution
与えられた通りに書く。$2 \le H,W \le 9$なので適当にやる。
implementation
#include <iostream>
#include <vector>
#include <cctype>
#define repeat(i,n) for (int i = 0; (i) < (n); ++(i))
using namespace std;
vector<string> decode(string s) {
vector<string> f;
f.push_back("");
for (char c : s) {
if (c == '/') {
f.push_back("");
} else if (c == 'b') {
f.back() += 'b';
} else if (isdigit(c)) {
repeat (i,c-'0') {
f.back() += '.';
}
}
}
return f;
}
string encode(vector<string> const & f) {
string s;
repeat (y,f.size()) {
if (y) s += '/';
repeat (x,f[y].size()) {
if (f[y][x] == 'b') {
s += 'b';
} else if (f[y][x] == '.') {
if (not s.empty() and isdigit(s.back())) {
s.back() += 1;
} else {
s += '1';
}
}
}
}
return s;
}
int main() {
while (true) {
string s; cin >> s;
if (s == "#") break;
vector<string> f = decode(s);
int a, b, c, d; cin >> a >> b >> c >> d; -- a; -- b; -- c; -- d;
f[a][b] = '.';
f[c][d] = 'b';
string t = encode(f);
cout << t << endl;
}
return 0;
}