Exemple #1
0
        public void ApplyMasksTests(string mask, uint value, uint expected)
        {
            var(orMask, xorMask) = DockingProgram.GetMasks(mask);
            var result = ApplyMasks(value, orMask, xorMask);

            Assert.Equal(expected, result);
        }
Exemple #2
0
        public void MaskConvertTest(string s, ulong expectedOrMask, ulong expectedXorMask)
        {
            var(orMask, xorMask) = DockingProgram.GetMasks(s);

            Assert.Equal(expectedOrMask, orMask);
            Assert.Equal(expectedXorMask, xorMask);
        }
Exemple #3
0
        public void Example1(string s, params int[] values)
        {
            var program = DockingProgram.Parse(s);

            Assert.Equal((uint)values[0], program.Or);
            Assert.Equal((uint)values[1], program.Xor);
            Assert.Equal(values[2], program.Routines[0].Location);
            Assert.Equal((uint)values[3], program.Routines[0].Value);
            Assert.Equal(values[4], program.Routines[1].Location);
            Assert.Equal((uint)values[5], program.Routines[1].Value);
            Assert.Equal(values[6], program.Routines[2].Location);
            Assert.Equal((uint)values[7], program.Routines[2].Value);
        }
        static void Main(string[] args)
        {
            var days = new List <IDay>()
            {
                ExpenseReport.LoadFromFile("Day01/ExpenseReport.txt"),
                PasswordValidator.LoadFromFile("Day02/Passwords.txt"),
                Map.LoadFromFile("Day03/Map.txt"),
                PassportValidator.LoadFromFile("Day04/PassportData.txt"),
                BoardingPasses.LoadFromFile("Day05/Seats.txt"),
                Declerations.LoadFromFile("Day06/Declerations.txt"),
                LuggageRules.LoadFromFile("Day07/LuggageRules.txt"),
                GameConsole.LoadFromFile("Day08/BootCode.txt"),
                AdditionSystem.LoadFromFile("Day09/Data.txt"),
                JoltAdapters.LoadFromFile("Day10/JoltAdapters.txt"),
                SeatingLayout.LoadFromFile("Day11/SeatingLayout.txt"),
                Navigation.LoadFromFile("Day12/NavigationInstructions.txt"),
                Buses.LoadFromFile("Day13/Buses.txt"),
                DockingProgram.LoadFromFile("Day14/DockingProgram.txt"),
                MemoryGame.Create("15,12,0,14,3,1"),
                TicketAnalyser.LoadFromFile("Day16/TicketData.txt"),
                ConwayCube.LoadFromFile("Day17/ConwayCube.txt"),
                OperationOrder.LoadFromFile("Day18/Expressions.txt"),
                JurassicJigsaw.LoadFromFile("Day20/Tiles.txt"),
                Combat.LoadFromFile("Day22/Cards.txt")
            };

            var invalidCount = 0;

            foreach (var day in days)
            {
                var part1 = day.Part1();
                var part2 = day.Part2();

                var part1Invalid = !string.IsNullOrWhiteSpace(day.ValidatedPart1) &&
                                   part1 != day.ValidatedPart1;

                var part2Invalid = !string.IsNullOrWhiteSpace(day.ValidatedPart2) &&
                                   part2 != day.ValidatedPart2;

                invalidCount += part1Invalid ? 1 : 0;
                invalidCount += part2Invalid ? 1 : 0;

                var part1InvalidString = part1Invalid ? " INVALID" : "";
                var part2InvalidString = part2Invalid ? " INVALID" : "";

                Console.WriteLine($"Day {day.DayNumber} Part 1: {part1}{part1InvalidString}");
                Console.WriteLine($"Day {day.DayNumber} Part 2: {part2}{part2InvalidString}");
            }

            Console.WriteLine($"{invalidCount} INVALID Results");
        }
Exemple #5
0
        public void Example2(string s, ulong expected)
        {
            var locations = new Dictionary <int, ulong>();
            var program   = DockingProgram.Parse(s);

            foreach (var routine in program.Routines)
            {
                var result = ApplyMasks(routine.Value, program.Or, program.Xor);

                if (!locations.TryAdd(routine.Location, result))
                {
                    locations[routine.Location] = result;
                }
            }

            Assert.Equal(
                expected,
                locations.GetValues().Sum());
        }