#include <iostream>
#include <vector>
using std::vector;
using std::string;
using MAP_GRID = vector<vector<string>>;
using namespace std;
void print_terrain(MAP_GRID);
void set_position(MAP_GRID&, int, int, string);
MAP_GRID create_terrain(int);
int main()
{
MAP_GRID map = create_terrain(10);
print_terrain(map);
set_position(map, 5, 5, "[x]");
cout << "\n\n";
print_terrain(map);
return 0;
}
MAP_GRID create_terrain(int size)
{
MAP_GRID map;
for (int i = 0; i < size; ++i) {
map.emplace_back(vector<string>());
for (int j = 0; j < size; ++j) {
map[i].emplace_back("[ ]");
}
}
return map;
}
void print_terrain(MAP_GRID map)
{
for (int i = 0; i < map.size(); ++i) {
for (int j = 0; j < map[i].size(); ++j) {
std::cout.width(4);
std::cout << map[i][j].c_str();
}
std::cout << std::endl;
}
}
void set_position(MAP_GRID& map, int x, int y, string object)
{
if (map[x][y] != "[ ]")
std::cout << "\nPosition is occupied" << std::endl;
map[x][y] = object; //temporary change
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgogCnVzaW5nIHN0ZDo6dmVjdG9yOwp1c2luZyBzdGQ6OnN0cmluZzsKdXNpbmcgTUFQX0dSSUQgPSB2ZWN0b3I8dmVjdG9yPHN0cmluZz4+Owp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBwcmludF90ZXJyYWluKE1BUF9HUklEKTsKdm9pZCBzZXRfcG9zaXRpb24oTUFQX0dSSUQmLCBpbnQsIGludCwgc3RyaW5nKTsKTUFQX0dSSUQgY3JlYXRlX3RlcnJhaW4oaW50KTsKIAppbnQgbWFpbigpCnsKICAgIE1BUF9HUklEIG1hcCA9IGNyZWF0ZV90ZXJyYWluKDEwKTsKICAgIHByaW50X3RlcnJhaW4obWFwKTsKICAgIHNldF9wb3NpdGlvbihtYXAsIDUsIDUsICJbeF0iKTsKICAgIGNvdXQgPDwgIlxuXG4iOwogICAgcHJpbnRfdGVycmFpbihtYXApOwogICAgcmV0dXJuIDA7Cn0KCiAKTUFQX0dSSUQgY3JlYXRlX3RlcnJhaW4oaW50IHNpemUpCnsKICAgIE1BUF9HUklEIG1hcDsKIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICBtYXAuZW1wbGFjZV9iYWNrKHZlY3RvcjxzdHJpbmc+KCkpOwogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc2l6ZTsgKytqKSB7CiAgICAgICAgICAgIG1hcFtpXS5lbXBsYWNlX2JhY2soIlsgXSIpOwogICAgICAgIH0KICAgIH0KIAogICAgcmV0dXJuIG1hcDsKfQogCnZvaWQgcHJpbnRfdGVycmFpbihNQVBfR1JJRCBtYXApCnsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWFwLnNpemUoKTsgKytpKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtYXBbaV0uc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgc3RkOjpjb3V0LndpZHRoKDQpOwogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgbWFwW2ldW2pdLmNfc3RyKCk7CiAgICAgICAgfQogICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CiAgICB9Cn0KIAp2b2lkIHNldF9wb3NpdGlvbihNQVBfR1JJRCYgbWFwLCBpbnQgeCwgaW50IHksIHN0cmluZyBvYmplY3QpCnsKICAgIGlmIChtYXBbeF1beV0gIT0gIlsgXSIpCiAgICAgICAgc3RkOjpjb3V0IDw8ICJcblBvc2l0aW9uIGlzIG9jY3VwaWVkIiA8PCBzdGQ6OmVuZGw7CiAgICBtYXBbeF1beV0gPSBvYmplY3Q7IC8vdGVtcG9yYXJ5IGNoYW5nZQp9