public void TestMiscellaneous()
        {
            List <string> rulesTexts = StringListRetriever.Retreive("InputList7.txt").ToList();
            int           rulesCount = rulesTexts.Count;

            Assert.Equal(594, rulesCount);
            Assert.Equal("vibrant purple bags contain 3 shiny lavender bags, 1 mirrored gray bag, 4 muted bronze bags.", rulesTexts.First());
            Assert.Equal("shiny violet bags contain 5 shiny aqua bags, 1 striped brown bag, 1 dark blue bag, 5 wavy white bags.", rulesTexts.Last());
            Rule firstRule = new Rule(rulesTexts.First());

            Assert.Equal(14, firstRule.ContainerColor.Length);
            Assert.Equal("vibrant purple", firstRule.ContainerColor);
            Assert.Equal(3, firstRule.Contents.Count);
            Assert.Equal(8, firstRule.Contents.Sum(x => x.Value));
            Rule lastRule = new Rule(rulesTexts.Last());

            Assert.Equal(12, lastRule.ContainerColor.Length);
            Assert.Equal("shiny violet", lastRule.ContainerColor);
            Assert.Equal(4, lastRule.Contents.Count);
            Assert.Equal(12, lastRule.Contents.Sum(x => x.Value));
            Rule noContentsRule = new Rule(rulesTexts[16]);

            Assert.Equal(13, noContentsRule.ContainerColor.Length);
            Assert.Equal("vibrant brown", noContentsRule.ContainerColor);
            int actual = noContentsRule.Contents.Count;

            Assert.Equal(0, actual);
            Assert.Equal(0, noContentsRule.Contents.Sum(x => x.Value));
        }
        public void Part2()
        {
            int           attemptLimit         = 100;
            List <int>    changeHistory        = new List <int>();
            List <string> originalInstructions = StringListRetriever.Retreive("InputList8.txt").ToList();
            List <string> instructions         = new List <string>(originalInstructions);
            int           accumulator          = 0;
            int           attempts             = 0;
            bool          isFixed = false;

            do
            {
                attempts++;
                Emulator emulator = new Emulator(instructions);
                emulator.Run();
                if (!emulator.State.IsInfiniteLoop())
                {
                    accumulator = emulator.State.Accumulator;
                    isFixed     = true;
                    break;
                }
                instructions = FixInstructions(originalInstructions, emulator.State.ExecutionPath, changeHistory);
            } while ((!isFixed) && (attempts < attemptLimit));
            Assert.Equal(920, accumulator);
            Assert.Equal(81, attempts);
        }
示例#3
0
        public void Part1()
        {
            SatelliteData satelliteData = new SatelliteData(StringListRetriever.Retreive("InputList19.txt").ToList());
            List <string> validMessages = ValidSatelliteMessageCreator.CreateList(satelliteData);

            Assert.Equal(142, satelliteData.Messages.Count(x => validMessages.Any(y => y == x)));
        }
        public void Part1()
        {
            TicketValidationResult result = TicketValidator.ValidateNearby(
                TicketDataParser.Parse(StringListRetriever.Retreive("InputList15.txt").ToList()));

            Assert.Equal(29759, result.InvalidValues.Sum());
        }
示例#5
0
        public void Part2()
        {
            List <BoardingPass> boardingPasses = StringListRetriever.Retreive("InputList5.txt").Select(x => new BoardingPass(x)).ToList();
            int minSeatId = 8;
            int maxSeatId = 127 * 8;
            Dictionary <int, bool> seatList = new Dictionary <int, bool>();

            for (int seatId = minSeatId; seatId <= maxSeatId; seatId++)
            {
                seatList.Add(seatId, false);
            }
            foreach (BoardingPass boardingPass in boardingPasses)
            {
                seatList[boardingPass.GetSeatId()] = true;
            }
            List <int> emptySeatIds = seatList.Where(x => !x.Value).Select(x => x.Key).ToList();

            Assert.Equal(84, emptySeatIds.Count);
            List <int> emptySeatIds2 = emptySeatIds.Where(x => !emptySeatIds.Any(y => y == x - 1)).ToList();

            Assert.Equal(2, emptySeatIds2.Count);
            List <int> emptySeatIds3 = emptySeatIds2.Where(x => !emptySeatIds.Any(y => y == x + 1)).ToList();
            int        actual        = emptySeatIds3.Count;

            Assert.Equal(1, actual);
            Assert.Equal(711, emptySeatIds3[0]);
        }
示例#6
0
        private List <Passport> GetPassports()
        {
            List <Passport> passports = new List <Passport>();
            Passport        passport  = null;

            foreach (string line in StringListRetriever.Retreive("InputList4.txt"))
            {
                if (line.Length == 0)
                {
                    if (passport != null)
                    {
                        passports.Add(passport);
                        passport = null;
                    }
                }
                else
                {
                    if (passport == null)
                    {
                        passport = new Passport();
                    }
                    passport.AddLine(line);
                }
            }
            if (passport != null)
            {
                passports.Add(passport);
            }
            return(passports);
        }
        public void Part1()
        {
            Emulator emulator = new Emulator(StringListRetriever.Retreive("InputList8.txt").ToList());

            emulator.Run();
            Assert.Equal(1584, emulator.State.Accumulator);
            Assert.True(emulator.State.IsInfiniteLoop());
        }
示例#8
0
        public void Part1()
        {
            BusScheduler       busScheduler       = new BusScheduler();
            BusSchedulerResult busSchedulerResult = busScheduler.FindBus(StringListRetriever.Retreive("InputList13.txt").ToList());
            long answer = busSchedulerResult.BusId * busSchedulerResult.MinutesWaited;

            Assert.Equal(6568, answer);
        }
示例#9
0
        public void Part1()
        {
            AdapterTester         adapterTester = new AdapterTester(StringListRetriever.Retreive("InputList10.txt").Select(x => int.Parse(x)).ToList());
            Dictionary <int, int> results       = adapterTester.ComputeJoltageDifferences();
            int answer = results[1] * (results[3] + 1);

            Assert.Equal(1914, answer);
        }
示例#10
0
        public void Part2()
        {
            List <Rule> rules      = StringListRetriever.Retreive("InputList7.txt").Select(x => new Rule(x)).ToList();
            int         rulesCount = rules.Count;

            Assert.Equal(594, rulesCount);
            Assert.Equal(155802, GetContainingBagCount(rules, "shiny gold"));
        }
示例#11
0
        public void Part1()
        {
            List <long> numbers     = StringListRetriever.Retreive("InputList9.txt").Select(x => long.Parse(x)).ToList();
            int         preamble    = 25;
            XmasDecoder xmasDecoder = new XmasDecoder();

            xmasDecoder.Decode(numbers, preamble);
            Assert.Equal(552655238, xmasDecoder.BadNumber);
        }
        public void Part2()
        {
            InstructionExecuter instructionExecuter = new InstructionExecuter(new Part2MaskApplier());

            instructionExecuter.Execute(StringListRetriever.Retreive("InputList14.txt").ToList());
            long answer = instructionExecuter.GetSumOfAllValues();

            Assert.Equal(4160009892257, answer);
        }
        public void Part1()
        {
            InstructionExecuter instructionExecuter = new InstructionExecuter(new Part1MaskApplier());

            instructionExecuter.Execute(StringListRetriever.Retreive("InputList14.txt").ToList());
            long answer = instructionExecuter.GetSumOfAllValues();

            Assert.Equal(17481577045893, answer);
        }
        public void Part2()
        {
            TicketData             ticketData             = TicketDataParser.Parse(StringListRetriever.Retreive("InputList15.txt").ToList());
            TicketValidationResult ticketValidationResult = TicketValidator.ValidateNearby(ticketData);
            FieldOrderResult       fieldOrderResult       = FieldOrderFinder.FindFieldOrderFor(ticketValidationResult.Tickets, ticketData.ValidationRules);

            Assert.Equal(1307550234719, fieldOrderResult.FieldOrder.Keys.Where(x => x.StartsWith("departure"))
                         .Select(x => System.Convert.ToInt64(ticketData.Tickets[0].DataItems[fieldOrderResult.FieldOrder[x]]))
                         .Aggregate <long, long>(1, (x, y) => x * y));
        }
        public void Part2()
        {
            List <Cube> cubeState = CubeCoordinateParser.ParseFrom(StringListRetriever.Retreive("InputList17.txt").ToList());

            cubeState = CubeBootProcessor.ProcessCycle(cubeState, 1);
            cubeState = CubeBootProcessor.ProcessCycle(cubeState, 1);
            cubeState = CubeBootProcessor.ProcessCycle(cubeState, 1);
            cubeState = CubeBootProcessor.ProcessCycle(cubeState, 1);
            cubeState = CubeBootProcessor.ProcessCycle(cubeState, 1);
            cubeState = CubeBootProcessor.ProcessCycle(cubeState, 1);
            Assert.Equal(2084, cubeState.Count(c => c.active));
        }
        public void Part1()
        {
            Ferry    ferry         = new Ferry();
            Position ferryPosition = new Position
            {
                Direction     = 90,
                EastPosition  = 0,
                NorthPosition = 0
            };

            ferry.MoveMany(new Part1FerryMover(ferryPosition), StringListRetriever.Retreive("InputList12.txt").Select(x => new NavigationInstruction(x)).ToList());
            Assert.Equal(420, ferryPosition.GetManhattanDistance());
        }
示例#17
0
        public void Part2()
        {
            List <long> numbers     = StringListRetriever.Retreive("InputList9.txt").Select(x => long.Parse(x)).ToList();
            int         preamble    = 25;
            XmasDecoder xmasDecoder = new XmasDecoder();

            xmasDecoder.Decode(numbers, preamble);
            Assert.Equal(552655238, xmasDecoder.BadNumber);
            Assert.Equal(610, xmasDecoder.BadIndex);
            List <long> badSet = xmasDecoder.FindSetFor(numbers, xmasDecoder.BadIndex);

            Assert.Equal(70672245, badSet.Min() + badSet.Max());
        }
示例#18
0
        public void Part1()
        {
            // Test samples from site
            Assert.Equal(567, (new BoardingPass("BFFFBBFRRR").GetSeatId()));
            Assert.Equal(119, (new BoardingPass("FFFBBBFRRR").GetSeatId()));
            Assert.Equal(820, (new BoardingPass("BBFFBBFRLL").GetSeatId()));
            // Test first and last
            Assert.Equal(0, (new BoardingPass("FFFFFFFLLL").GetSeatId()));
            Assert.Equal(128 * 8 - 1, (new BoardingPass("BBBBBBBRRR").GetSeatId()));
            // Load from puzzle input file
            List <BoardingPass> boardingPasses = StringListRetriever.Retreive("InputList5.txt").Select(x => new BoardingPass(x)).ToList();

            Assert.Equal(927, boardingPasses.Count);
            Assert.Equal(6, boardingPasses.Min(x => x.GetSeatId()));
            Assert.Equal(933, boardingPasses.Max(x => x.GetSeatId()));
        }
示例#19
0
        public void MiscellaneousTests()
        {
            List <string> items = StringListRetriever.Retreive("InputList6.txt").ToList();
            int           count = items.Count;

            Assert.Equal(2172, count);
            Assert.Equal("su", items[0]);
            Assert.Equal("lzdaftrjphco", items[2171]);
            List <PassengerGroup> passengerGroups = PassengerGroupsParser.Parse(StringListRetriever.Retreive("InputList6.txt").ToList());

            Assert.Equal(2, passengerGroups.First().Passengers.Count);
            Assert.Equal(3, passengerGroups.Last().Passengers.Count);
            Assert.Equal(("lzdaftrjphco").Length, passengerGroups.Last().Passengers.Last().YesAnswers.Count);
            Assert.Equal('a', passengerGroups.Last().Passengers.Last().YesAnswers[0]);
            Assert.Equal('z', passengerGroups.Last().Passengers.Last().YesAnswers[11]);
            Assert.Equal(4, passengerGroups.First().YesQuestionCount());
        }
示例#20
0
        public void CountTreesPart2()
        {
            Map map    = new Map(StringListRetriever.Retreive("InputList3.txt"));
            int count1 = map.CountTrees(1, 1);

            Assert.Equal(84, count1);
            int count2 = map.CountTrees(3, 1);

            Assert.Equal(195, count2);
            int count3 = map.CountTrees(5, 1);

            Assert.Equal(70, count3);
            int count4 = map.CountTrees(7, 1);

            Assert.Equal(70, count4);
            int count5 = map.CountTrees(1, 2);

            Assert.Equal(47, count5);
            long multipled = (long)count1 * (long)count2 * (long)count3 * (long)count4 * (long)count5;

            Assert.Equal(3772314000, multipled);
        }
示例#21
0
        [Fact]// (Skip="Runs too long")]
        public void Part2()
        {
            AdapterTester adapterTester = new AdapterTester(StringListRetriever.Retreive("InputList10.txt").Select(x => int.Parse(x)).ToList());

            Assert.Equal(9256148959232, adapterTester.GetJoltageArrangementCount());
        }
示例#22
0
        public void Part2()
        {
            List <PassengerGroup> passengerGroups = PassengerGroupsParser.Parse(StringListRetriever.Retreive("InputList6.txt").ToList());

            Assert.Equal(3288, passengerGroups.Sum(x => x.EveryoneYesCount()));
        }
示例#23
0
        public void Part1()
        {
            List <PassengerGroup> passengerGroups = PassengerGroupsParser.Parse(StringListRetriever.Retreive("InputList6.txt").ToList());

            Assert.Equal(6590, passengerGroups.Sum(x => x.YesQuestionCount()));
        }
示例#24
0
 public void Part1()
 {
     Assert.Equal(280014646144, StringListRetriever.Retreive("InputList18.txt").Select(x => FormulaEvaluator.Evaluate(x)).Sum());
 }
示例#25
0
 public void Part2()
 {
     Assert.Equal(9966990988262, StringListRetriever.Retreive("InputList18.txt").Select(x => FormulaEvaluator.EvaluateAdvanced(x)).Sum());
 }
示例#26
0
        public void CountTreesPart1()
        {
            Map map = new Map(StringListRetriever.Retreive("InputList3.txt"));

            Assert.Equal(195, map.CountTrees(3, 1));
        }
        public void Part2()
        {
            Ferry ferry = new Ferry();

            Assert.Equal(2032, ferry.GetSeatsAfterEquilibriumPart2(StringListRetriever.Retreive("InputList11.txt").ToList()));
        }
示例#28
0
 private List <int> RetreiveInternalList()
 {
     return(StringListRetriever.Retreive("InputList1.txt").Select(x => int.Parse(x)).ToList());
 }
示例#29
0
 private List <BasePasswordEntry> GetPasswordEntries(Func <string, BasePasswordEntry> createEntry)
 {
     return(StringListRetriever.Retreive("InputList2.txt").Select(x => createEntry.Invoke(x)).ToList());
 }