Exemple #1
0
        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);
        }
Exemple #2
0
        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));
        }