using System;
namespace Project
{
class Program
{
public static void Main()
{
World world = new World(10, 8);
world[1, 5] = 5;
PrintWorld(world);
Console.ReadKey();
}
public static void PrintWorld(World world)
{
for (int y = 0; y < world.Height; y++)
{
for (int x = 0; x < world.Width; x++)
Console.Write("{0} ", world[x, y]);
Console.WriteLine();
}
}
public class World
{
private int[,] world;
public int Width => world.GetLength(1);
public int Height => world.GetLength(0);
public World(int width, int height, int defaultValue = 0)
{
world = new int[height, width];
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
world[y, x] = defaultValue;
}
public bool IsCoordinatesCorrect(int x, int y)
{
return x >= 0 && x < Width
&& y >= 0 && y < Height;
}
public int this[int x, int y]
{
get => world[y, x];
set => world[y, x] = value;
}
}
}
}
dXNpbmcgU3lzdGVtOwoKbmFtZXNwYWNlIFByb2plY3QKewogICAgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgICAgICB7CiAgICAgICAgICAgIFdvcmxkIHdvcmxkID0gbmV3IFdvcmxkKDEwLCA4KTsKICAgICAgICAgICAgd29ybGRbMSwgNV0gPSA1OwogICAgICAgICAgICBQcmludFdvcmxkKHdvcmxkKTsKICAgICAgICAgICAgQ29uc29sZS5SZWFkS2V5KCk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgUHJpbnRXb3JsZChXb3JsZCB3b3JsZCkKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgd29ybGQuSGVpZ2h0OyB5KyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd29ybGQuV2lkdGg7IHgrKykKICAgICAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlKCJ7MH0gIiwgd29ybGRbeCwgeV0pOwogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHVibGljIGNsYXNzIFdvcmxkCiAgICAgICAgewogICAgICAgICAgICBwcml2YXRlIGludFssXSB3b3JsZDsKICAgICAgICAgICAgcHVibGljIGludCBXaWR0aCA9PiB3b3JsZC5HZXRMZW5ndGgoMSk7CiAgICAgICAgICAgIHB1YmxpYyBpbnQgSGVpZ2h0ID0+IHdvcmxkLkdldExlbmd0aCgwKTsKCiAgICAgICAgICAgIHB1YmxpYyBXb3JsZChpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBkZWZhdWx0VmFsdWUgPSAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB3b3JsZCA9IG5ldyBpbnRbaGVpZ2h0LCB3aWR0aF07CgogICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkW3ksIHhdID0gZGVmYXVsdFZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdWJsaWMgYm9vbCBJc0Nvb3JkaW5hdGVzQ29ycmVjdChpbnQgeCwgaW50IHkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiB4ID49IDAgJiYgeCA8IFdpZHRoCiAgICAgICAgICAgICAgICAgICAgJiYgeSA+PSAwICYmIHkgPCBIZWlnaHQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1YmxpYyBpbnQgdGhpc1tpbnQgeCwgaW50IHldCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGdldCA9PiB3b3JsZFt5LCB4XTsKICAgICAgICAgICAgICAgIHNldCA9PiB3b3JsZFt5LCB4XSA9IHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9