예제 #1
0
파일: Aoc13.cs 프로젝트: storm84/AOC
        public override string PartA(string[] inputs)
        {
            var program  = inputs[0].Split(',').Select(long.Parse).ToArray();
            var computer = new IntecodeComputer(program);
            Dictionary <Point, int> screen = new Dictionary <Point, int>();

            computer.Compute();
            while (computer.OutputQueue.Any())
            {
                if (computer.OutputQueue.Count < 3)
                {
                    throw new System.Exception("Invalid queue count");
                }
                var p    = new Point((int)computer.OutputQueue.Dequeue(), (int)computer.OutputQueue.Dequeue());
                int tile = (int)computer.OutputQueue.Dequeue();
                if (screen.ContainsKey(p))
                {
                    screen[p] = tile;
                }
                else
                {
                    screen.Add(p, tile);
                }
            }
            return(screen.Values.Where(x => x == 2).Count().ToString());
        }
예제 #2
0
        public override string PartA(string[] inputs)
        {
            var program  = inputs[0].Split(',').Select(long.Parse).ToArray();
            var computer = new IntecodeComputer(program);
            //computer.OutputToConsole = true;
            PaintingRobot rob = new PaintingRobot(computer);

            rob.Run(0);
            return(rob.PaintedPanelCount.ToString());
        }
예제 #3
0
        public override string PartB(string[] inputs)
        {
            var program  = inputs[0].Split(',').Select(long.Parse).ToArray();
            var computer = new IntecodeComputer(program);
            //computer.OutputToConsole = true;
            PaintingRobot rob = new PaintingRobot(computer);

            rob.Run(1);
            rob.Print();
            return("done!");
        }
예제 #4
0
 public PaintingRobot(IntecodeComputer icc)
 {
     intecodeComputer = icc;
 }