// UVa 445 - Marvelous Mazes #include <iostream> #include <string> #include <vector> using namespace std; #define is_a_digit(ch) ('0' <= ch && ch <= '9') int row, repetitions; bool first_maze; vector<string> maze; void start_new_maze() { maze.clear(); row = 0; maze.push_back(""); repetitions = 0; } void start_new_row() { row++; maze.push_back(""); repetitions = 0; } void feed(char ch) { if (is_a_digit(ch)) { repetitions += (ch - '0'); } else if (ch != '!') { if (ch == 'b') ch = ' '; maze[row].append(repetitions, ch); repetitions = 0; } else { start_new_row(); } } void print_maze() { if (first_maze) { first_maze = false; } else { cout << endl; } for (int i = 0; i < maze.size() - 1; i++) { cout << maze[i] << endl; } } int main() { string line; first_maze = true; start_new_maze(); while (getline(cin, line)) { if (line.size() == 0) { print_maze(); start_new_maze(); continue; } for (int i = 0; i < line.length(); i++) { feed(line[i]); } feed('!'); } print_maze(); return 0; }
Monday, October 31, 2016
UVa 445 - Marvelous Mazes
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment