- 丁寧にシミュレーションをすれば良い
- 左右に玉が転がる部分の判定ルーチンは使いまわせるように関数化した
bool check(const string& s, int pos, int dir)
{
for (; 0 <= pos && pos < s.size(); pos += dir) {
if (s[pos] == '.') {
return true;
} else if (s[pos] == '|' || s[pos] == '/' || s[pos] == '\\') {
return false;
}
}
return true;
}
int main()
{
string line;
while (getline(cin, line) && line != "#") {
double answer = 0;
for (int start = 0; start < line.size(); ++start) {
if (line[start] == '.') {
answer += 100.0;
} else if (line[start] == '_') {
answer += 0.0;
} else if (line[start] == '/') {
if (check(line, start - 1, -1)) {
answer += 100.0;
}
} else if (line[start] == '\\') {
if (check(line, start + 1, 1)) {
answer += 100.0;
}
} else if (line[start] == '|') {
if (check(line, start + 1, 1)) {
answer += 50.0;
}
if (check(line, start - 1, -1)) {
answer += 50.0;
}
}
}
cout << (int)(answer / line.size()) << endl;
}
}