Exemple #1
0
        public void Day02Part2_TestSolution()
        {
            long expectedOutput = 19690720;

            for (long noun = 0; noun <= 99; noun++)
            {
                for (long verb = 0; verb <= 99; verb++)
                {
                    try
                    {
                        List <long> values = DayDataUtilities.ReadMagicSmokePgmFromFile("day02.txt");

                        var sut = new MagicSmokeComputer();
                        sut.ProgramValues = values;
                        sut.Noun          = noun;
                        sut.Run();

                        if (expectedOutput == sut.ProgramValues[0])
                        {
                            Assert.Equal(6472, 100 * noun + verb);
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.Message);
                    }
                }
            }
            Debug.WriteLine("Done");
        }
        public void Day09Part1_Example03()
        {
            List <long> pgm = new List <long>(new long[] { 104, 1125899906842624, 99 });
            var         sut = new MagicSmokeComputer(pgm);

            sut.Run(MagicSmokeComputer.ProgramMode.Start);
            Assert.Equal(1125899906842624, sut.OutputPort());
        }
        public void Day09Part1_Example02()
        {
            List <long> pgm = new List <long>(new long[] { 1102, 34915192, 34915192, 7, 4, 7, 99, 0 });
            var         sut = new MagicSmokeComputer(pgm);

            sut.Run(MagicSmokeComputer.ProgramMode.Start);
            string actual = sut.OutputPort().ToString();

            Assert.Equal(16, actual.Length);
        }
Exemple #4
0
        public void Day02Part1_ExampleTest01()
        {
            List <long> values = new List <long>(new long[] { 1, 9, 10, 3, 2, 3, 11, 0, 99, 30, 40, 50 });

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.Run();

            Assert.Equal(3500, sut.ProgramValues[0]);
        }
        public void Day09Part1_Example01()
        {
            List <long> pgm = new List <long>(new long[] { 109, 1, 204, -1, 1001, 100, 1, 100, 1008, 100, 16, 101, 1006, 101, 0, 99 });
            var         sut = new MagicSmokeComputer(pgm);

            sut.Run(MagicSmokeComputer.ProgramMode.Start);
            foreach (var step in pgm)
            {
                Assert.Equal(step, sut.OutputPort());
            }
        }
        public void Day05_Part1_example02()
        {
            List <long> values = new List <long>(new long[] { 1002, 4, 3, 4, 33 });

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.Run();

            Assert.Equal(99, sut.ProgramValues[4]);
        }
Exemple #7
0
        public void Day02Part1_ExampleTest02()
        {
            List <long> values = new List <long>(new long[] { 1, 0, 0, 0, 99 });

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.Run();

            Assert.Equal(2, sut.ProgramValues[0]);
        }
        public void Day09Part2_TestSolution()
        {
            List <long> pgm = DayDataUtilities.ReadMagicSmokePgmFromFile("day09.txt");

            Assert.NotNull(pgm);
            var sut = new MagicSmokeComputer(pgm);

            sut.InputPort = 2;
            sut.Run(MagicSmokeComputer.ProgramMode.Start);
            Assert.Equal(1, sut.OutputQueueSize());
            Assert.Equal(80379, sut.OutputPort());
        }
        public void Day05_Part1_example08(int input, int expectedOutput)
        {
            List <long> values = new List <long>(new long[] { 3, 3, 1105, -1, 9, 1101, 0, 0, 12, 4, 12, 99, 1 });

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.InputPort     = input;
            sut.Run();

            Assert.Equal(expectedOutput, sut.OutputPort());
        }
        public void Day05_Part1_example01()
        {
            List <long> values = new List <long>(new long[] { 3, 0, 4, 0, 99 });

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.InputPort     = 666;
            sut.Run();

            Assert.Equal(666, sut.OutputPort());
        }
        public void Day05_Part1_example05()
        {
            List <long> values = new List <long>(new long[] { 3, 3, 1108, -1, 8, 3, 4, 3, 99 });

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.InputPort     = 8;
            sut.Run();

            Assert.Equal(1, sut.OutputPort());
        }
        public void Day05_Part1_example04()
        {
            List <long> values = new List <long>(new long[] { 3, 9, 7, 9, 10, 9, 4, 9, 99, -1, 8 });

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.InputPort     = 8;
            sut.Run();

            Assert.Equal(0, sut.OutputPort());
        }
Exemple #13
0
        public void Day02Part1_ExampleTest04()
        {
            List <long> values = new List <long>(new long[] { 2, 4, 4, 5, 99, 0 });

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.Run();

            Assert.Equal(2, sut.ProgramValues[0]);
            Assert.Equal(9801, sut.ProgramValues[5]);
        }
        public void Day05_Part1_example09(int input, int expectedOutput)
        {
            List <long> values = new List <long>(new long[] { 3, 21, 1008, 21, 8, 20, 1005, 20, 22, 107, 8, 21, 20, 1006, 20, 31, 1106, 0, 36, 98, 0, 0, 1002, 21, 125, 20, 4, 20, 1105, 1, 46, 104, 999, 1105, 1, 46, 1101, 1000, 1, 20, 4, 20, 1105, 1, 46, 98, 99 });

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.InputPort     = input;
            sut.Run();

            Assert.Equal(expectedOutput, sut.OutputPort());
        }
Exemple #15
0
        public void Day02Part1_TestSolution()
        {
            List <long> values = DayDataUtilities.ReadMagicSmokePgmFromFile("day02.txt");

            Assert.Equal(137, values.Count);

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.Noun          = 12;
            sut.Verb          = 2;
            sut.Run();

            Assert.Equal(3716250, sut.ProgramValues[0]);
        }
        public void Day13Part1_TestSolution()
        {
            List <long> pgm = DayDataUtilities.ReadMagicSmokePgmFromFile("day13.txt");

            Assert.NotNull(pgm);

            var sut = new MagicSmokeComputer(pgm);

            MagicSmokeComputer.ProgramMode status = MagicSmokeComputer.ProgramMode.Start;
            do
            {
                status = sut.Run(status);
            } while (status != MagicSmokeComputer.ProgramMode.Stop);
            Assert.Equal(MagicSmokeComputer.ProgramMode.Stop, status);

            // analyze the out put queue
            PointEqualityComparer   peqc          = new PointEqualityComparer();
            Dictionary <Point, int> dictGameBoard = new Dictionary <Point, int>(peqc);

            do
            {
                int   x      = (int)sut.OutputPort();
                int   y      = (int)sut.OutputPort();
                int   tileId = (int)sut.OutputPort();
                Point p      = new Point(x, y);
                if (dictGameBoard.ContainsKey(p))
                {
                    dictGameBoard[p] = tileId;
                }
                else
                {
                    dictGameBoard.Add(p, tileId);
                }
            } while (sut.OutputQueueSize() > 0);
            Assert.NotEmpty(dictGameBoard);
            int blocktiles = 0;

            foreach (var tile in dictGameBoard.Values)
            {
                if (tile == 2)
                {
                    blocktiles++;
                }
            }
            //int blockedTiles = dictGameBoard.Values.Select(t => t == 2).ToList().Count();
            Assert.Equal(268, blocktiles);
        }
        public void Day05Part2_TestSolution()
        {
            List <long> values = DayDataUtilities.ReadMagicSmokePgmFromFile("day05.txt");

            Assert.Equal(223, values[values.Count - 3]);
            Assert.Equal(99, values[values.Count - 2]);
            Assert.Equal(226, values[values.Count - 1]);

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.InputPort     = 5;
            //sut.InputPort = 1;

            sut.Run();

            Assert.Equal(4655956, sut.OutputPort());
        }
        public void Day05Part1_TestSolution()
        {
            List <long> values = DayDataUtilities.ReadMagicSmokePgmFromFile("day05.txt");

            Assert.Equal(223, values[values.Count - 3]);
            Assert.Equal(99, values[values.Count - 2]);
            Assert.Equal(226, values[values.Count - 1]);

            var sut = new MagicSmokeComputer();

            sut.ProgramValues = values;
            sut.InputPort     = 1;

            sut.Run();
            long actualCode = 0;

            do
            {
                actualCode = sut.OutputPort();
            } while (actualCode == 0);
            Assert.Equal(14522484, actualCode);
        }
Exemple #19
0
        static void Main(string[] args)
        {
            Console.WriteLine("Day13 Part 2 Start!");
            List<long> pgm = DayDataUtilities.ReadMagicSmokePgmFromFile("day13.txt");
            int blockedTiles = 0;
            int val = 0;
            var sut = new MagicSmokeComputer(pgm);
            Point pscore = new Point(-1, 0);
            Point ball = null;
            Point paddle = null;
            PointEqualityComparer peqc = new PointEqualityComparer();
            Dictionary<Point, int> dictGameBoard = new Dictionary<Point, int>(peqc);
            sut.Coins = 2;
            MagicSmokeComputer.ProgramMode status = MagicSmokeComputer.ProgramMode.Start;
            do
            {
                status = sut.Run(status);

                // dump out the screen
                while (sut.OutputQueueSize() > 0)
                {
                    int x = (int)sut.OutputPort();
                    int y = (int)sut.OutputPort();
                    int tileId = (int)sut.OutputPort();
                    Point p = new Point(x, y);
                    if (dictGameBoard.ContainsKey(p))
                    {
                        dictGameBoard[p] = tileId;
                    }
                    else
                    {
                        dictGameBoard.Add(p, tileId);
                    }
                }
                // print the score 
                //Console.Clear();
                //foreach (Point p in dictGameBoard.Keys)
                //{
                //    if (p.X != -1)
                //    {
                //        WriteAt(p, dictGameBoard[p]);
                //    }
                //}
                blockedTiles = 0;
                foreach (var item in dictGameBoard)
                {
                    if (item.Value == 2)
                    {
                        blockedTiles++;
                    }
                    if (item.Value == 3)
                    {
                        paddle = item.Key;
                    }
                    if (item.Value == 4)
                    {
                        ball = item.Key;
                    }
                }
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine("Score: {0}", dictGameBoard[pscore]);
                Console.WriteLine("Tiles: {0}", blockedTiles);
                Console.WriteLine();
                // put the input here
                if (ball.X < paddle.X)
                {
                    // left
                    val = -1;
                }
                else if (ball.X > paddle.X)
                {
                    // right
                    val = 1;
                }
                else
                {
                    val = 0;
                }
                sut.InputPort = val;
            } while (status != MagicSmokeComputer.ProgramMode.Stop);

            Console.WriteLine("Day13 Part 2 Done!");
        }