public long Solve1() { while (Computer.IsRunning()) { while (Computer.GetOutput().Count < 2 && Computer.IsRunning()) { Computer.Process(grid[CurrentX, CurrentY]); } var output = Computer.GetOutput(); if (output.Count > 1) { grid[CurrentX, CurrentY] = output.ElementAt(0); painted[CurrentX, CurrentY] = 1; ProcessDirection(output.ElementAt(1)); Computer.ClearOutput(); } } var count = 0; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { if (painted[i, j] == 1) { count++; } } } return(count); }
public long Solve1() { while (Computer.IsRunning()) { while (Computer.GetOutput().Count < 3 && Computer.IsRunning()) { Computer.Process(0); } var output = Computer.GetOutput(); if (output.Count == 3) { Tiles.Add(new Tile { X = output.ElementAt(0), Y = output.ElementAt(1), Type = (TileType)output.ElementAt(2) }); Computer.ClearOutput(); } } return(Tiles.Count(t => t.Type == TileType.Block)); }