예제 #1
0
        public void CanSolvePart2aWithNonExistentColor(string[] input, string bag, int expected)
        {
            var day7   = new Day7();
            var result = day7.SolvePart2(input, bag);

            Assert.Equal(expected, result);
        }
예제 #2
0
        public void PartATests(string input, string expectedOutput)
        {
            var day    = new Day7();
            var result = day.SolveA(input);

            Assert.AreEqual(expectedOutput, result);
        }
예제 #3
0
        public void BuildOperation(string name, string operations, UInt16 expectedOutput)
        {
            var day7   = new Day7();
            var actual = day7.Calculate(name, operations);

            Assert.Equal(expectedOutput, actual);
        }
예제 #4
0
        public void Part2()
        {
            var day    = new Day7(TestDataPart2);
            var result = day.FindCountOfContainedBagsInGoldBag();

            Assert.Equal(126, result);
        }
예제 #5
0
        static void Main(string[] args)
        {
            PuzzleSolver puzzleSolver;

            puzzleSolver = new Day1(InputStrings.InputStringDay1);
            puzzleSolver.SolvePuzzles();

            puzzleSolver = new Day2(InputStrings.InputStringDay2);
            puzzleSolver.SolvePuzzles();

            puzzleSolver = new Day3(InputStrings.InputStringDay3);
            puzzleSolver.SolvePuzzles();

            puzzleSolver = new Day4(InputStrings.InputStringDay4);
            puzzleSolver.SolvePuzzles();

            puzzleSolver = new Day5(InputStrings.InputStringDay5);
            puzzleSolver.SolvePuzzles();

            puzzleSolver = new Day6(InputStrings.InputStringDay6);
            puzzleSolver.SolvePuzzles();

            puzzleSolver = new Day7(InputStrings.InputStringDay7);
            puzzleSolver.SolvePuzzles();

            puzzleSolver = new Day8(InputStrings.InputStringDay8);
            puzzleSolver.SolvePuzzles();
        }
예제 #6
0
        public void ParseEmptyBagRule()
        {
            var bag = Day7.ParseBagRule("light red bags contain no other bags.");

            Assert.AreEqual("light red", bag.Color);
            Assert.AreEqual(0, bag.Contents.Count);
        }
예제 #7
0
        public async Task Day7_Task2(string file, long expected)
        {
            var count = await Day7.Task2(file);

            Assert.Equal(expected, count);
            _output.WriteLine($"{count}");
        }
예제 #8
0
        public void FirstStarTest()
        {
            Day7 day7_solution = new Day7();
            var  response      = day7_solution.RunInlineAmplifiers(@"..\..\..\Inputs\day7_1.txt");

            Assert.AreEqual(46014, response);
        }
예제 #9
0
        public decimal SecondStarTests(string path)
        {
            Day7    day7_solution = new Day7();
            decimal response      = day7_solution.RunParalellAmplifiers(path);

            return(response);
        }
예제 #10
0
        public void CanSolvePart1(string[] input, string bag, int expected)
        {
            var day7   = new Day7();
            var result = day7.SolvePart1(input, bag);

            Assert.Equal(expected, result);
        }
예제 #11
0
        public void Dummytest()
        {
            var topShit   = new List <string>();
            var lowershit = new List <string>();
            var rowHist   = new List <int>();
            var input     = Day7.GetInput("Day7.txt");

            foreach (var line in input)
            {
                rowHist.Add(line.Split(',').Length);
                if (line.Contains("->"))
                {
                    lowershit.Add(line);
                }
                else
                {
                    topShit.Add(line);
                }
            }
            var zero   = rowHist.Count(x => x == 0);
            var topRow = rowHist.Count(x => x == 1);
            var two    = rowHist.Count(x => x == 2);
            var three  = rowHist.Count(x => x == 3);
            var four   = rowHist.Count(x => x == 4);
            var five   = rowHist.Count(x => x == 5);
            var six    = rowHist.Count(x => x == 6);
            var seven  = rowHist.Count(x => x == 7);
            var eight  = rowHist.Count(x => x == 8);
            var nine   = rowHist.Count(x => x == 9);
            var ten    = rowHist.Count(x => x == 10);

            var tot = zero + topRow + two + three + four + five + six + seven + eight + nine + ten;
        }
예제 #12
0
        public void Part1()
        {
            var day    = new Day7(TestDataPart1);
            var result = day.FindCountOfParentsContainingGoldBag();

            Assert.Equal(4, result);
        }
예제 #13
0
        public void TestDay7()
        {
            int[] input  = { 1, 2, 3 };
            var   result = new List <int[]>();

            Util.FindPermutations(input, result);
            Assert.AreEqual(6, result.Count);

            var  day7             = new Day7("");
            long lastOutputSignal = 0;

            Assert.AreEqual(43210, day7.RunProgramThroughAmplifiers(new int[] { 4, 3, 2, 1, 0 }, 0, ref lastOutputSignal, "3,15,3,16,1002,16,10,16,1,16,15,15,4,15,99,0,0"));

            Assert.AreEqual(43210, day7.FindMaxSignal("3,15,3,16,1002,16,10,16,1,16,15,15,4,15,99,0,0", new int[] { 4, 3, 2, 1, 0 }));
            Assert.AreEqual(54321, day7.FindMaxSignal("3,23,3,24,1002,24,10,24,1002,23,-1,23,101,5,23,23,1,24,23,23,4,23,99,0,0", new int[] { 0, 1, 2, 3, 4 }));
            Assert.AreEqual(65210, day7.FindMaxSignal("3,31,3,32,1002,32,10,32,1001,31,-2,31,1007,31,0,33,1002,33,7,33,1,33,31,31,1,32,31,31,4,31,99,0,0,0", new int[] { 1, 0, 4, 3, 2 }));

            //Max thruster signal 139629729 (from phase setting sequence 9,8,7,6,5):

            //3,26,1001,26,-4,26,3,27,1002,27,2,27,1,27,26,
            //27,4,27,1001,28,-1,28,1005,28,6,99,0,0,5
            //Max thruster signal 18216 (from phase setting sequence 9,7,8,5,6):

            //3,52,1001,52,-5,52,3,53,1,52,56,54,1007,54,5,55,1005,55,26,1001,54,
            //-5,54,1105,1,12,1,53,54,53,1008,54,0,55,1001,55,1,55,2,53,55,53,4,
            //53,1001,56,-1,56,1005,56,6,99,0,0,0,0,10
        }
예제 #14
0
 public static void StatusCheck()
 {
     if (ConnectionManager.Instance.ClientCount() > 0)
     {
         int    _daysRemaining = Day7.DaysRemaining(GameUtils.WorldTimeToDays(GameManager.Instance.World.GetWorldTime()));
         string _phrase301;
         string _phrase305;
         string _phrase306;
         if (!Phrases.Dict.TryGetValue(301, out _phrase301))
         {
             _phrase301 = "Next horde night is in {DaysUntilHorde} days";
         }
         if (!Phrases.Dict.TryGetValue(305, out _phrase305))
         {
             _phrase305 = "The horde is here!";
         }
         if (!Phrases.Dict.TryGetValue(306, out _phrase306))
         {
             _phrase306 = "Next horde night is today";
         }
         _phrase301 = _phrase301.Replace("{DaysUntilHorde}", _daysRemaining.ToString());
         if (_daysRemaining == 0 && !SkyManager.BloodMoon())
         {
             ChatHook.ChatMessage(null, LoadConfig.Chat_Response_Color + _phrase306 + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
         }
         else if (SkyManager.BloodMoon())
         {
             ChatHook.ChatMessage(null, LoadConfig.Chat_Response_Color + _phrase305 + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
         }
         else
         {
             ChatHook.ChatMessage(null, LoadConfig.Chat_Response_Color + _phrase301 + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
         }
     }
 }
예제 #15
0
        public void PartBTests(string input, int workers, int extraSteps, int expectedOutput)
        {
            var day    = new Day7();
            var result = day.SolveB(input, workers, extraSteps);

            Assert.AreEqual(expectedOutput, result);
        }
예제 #16
0
        public static void Exec(ClientInfo _cInfo)
        {
            int    _daysRemaining = Day7.DaysRemaining(GameUtils.WorldTimeToDays(GameManager.Instance.World.GetWorldTime()));
            string _phrase301;
            string _phrase305;
            string _phrase306;

            if (!Phrases.Dict.TryGetValue(301, out _phrase301))
            {
                _phrase301 = "Next horde night is in {DaysUntilHorde} days";
            }
            if (!Phrases.Dict.TryGetValue(305, out _phrase305))
            {
                _phrase305 = "The horde is here!";
            }
            if (!Phrases.Dict.TryGetValue(306, out _phrase306))
            {
                _phrase306 = "Next horde night is today";
            }
            _phrase301 = _phrase301.Replace("{DaysUntilHorde}", _daysRemaining.ToString());
            if (_daysRemaining == 0 && !SkyManager.BloodMoon())
            {
                ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _phrase306 + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
            }
            else if (SkyManager.BloodMoon())
            {
                ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _phrase305 + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
            }
            else
            {
                ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _phrase301 + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
            }
        }
예제 #17
0
    public async Task TestDay7Part2()
    {
        var inputMock    = PrepareInput();
        var objUnderTest = new Day7(inputMock.Object);

        Assert.That(await objUnderTest.Part2(), Is.EqualTo(32));
    }
예제 #18
0
        public static void Main(string[] args)
        {
            //var day1_1 = Day1.Day1_1();
            //var day1_2 = Day1.Day1_2();

            //var day3_1 = Day3.Day3_1();
            //var day3_2 = Day3.Day3_2();

            //var day4_1 = Day4.Day4_1();
            //var day4_2 = Day4.Day4_2();

            /************************************
            * IntCode
            * **********************************/
            //var day2_1 = Day2.Day2_1(); //3716293
            //var day2_2 = Day2.Day2_2(); //6429
            //var day5_1 = Day5.Day5_1(); //3122865
            //var day5_2 = Day5.Day5_2(); //773660
            //var day7_1 = Day7.Day7_1(); //99376
            var day7_2 = Day7.Day7_2();

            /************************************
            * IntCode
            * **********************************/


            //var day6_1 = Day6.Day6_1();
            //var day6_2 = Day6.Day6_2();



            //var day8_1 = Day8.Day8_1();
            //Day8.Day8_2();
        }
예제 #19
0
        public void Part2()
        {
            var day7 = new Day7();
            var a    = day7.Calculate("a", LoadFromResource.Load(@"AdventOfCode.Tests.TestData.Day7Part2.txt"));

            Assert.Equal(14710, a);
        }
예제 #20
0
        public void CanParseSteps()
        {
            var inputs = _testInput.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

            var results = Day7.Parse(inputs);

            Assert.Equal(6, results.Count());
        }
예제 #21
0
        public object GetResultSignals(string key)
        {
            var commands = Day7.GetCommands(Input);

            var result = Day7.GetResultSignals(commands, key);

            return(result[key]);
        }
예제 #22
0
        public void TestPart2()
        {
            Assert.AreEqual(32, d.Part2());

            d = new Day7(Path.Combine(TestContext.CurrentContext.TestDirectory, "Resources", "Input", "Day7-Part2.txt"));

            Assert.AreEqual(126, d.Part2());
        }
예제 #23
0
        public IActionResult Day7()
        {
            Day7 day7 = new Day7();

            ViewData["problem"]  = day7.getDefaultProblem();
            ViewData["solution"] = "<ul>" + "" + "</ul>";
            return(View("DayX", getModel(6)));
        }
예제 #24
0
        public void TestGetProgramWeight()
        {
            var programs   = Day7.ParseInput(TestInput).ToArray();
            var programMap = programs.ToDictionary(Day7.GetProgramName, x => x);
            var test       = Day7.GetProgramWeight("tknk (41) -> ugml, padx, fwft", programMap);

            Assert.Equal(778, test);
        }
예제 #25
0
    public void Should_calculate_fuel_required()
    {
        var inputPath = Path.Combine(TestContext.CurrentContext.TestDirectory, "Day7Tests/Input/example.txt");
        var input     = File.ReadAllText(inputPath);

        var result = Day7.CalculateFuelRequired(input);

        Assert.That(result, Is.EqualTo(37));
    }
예제 #26
0
        public void ParseWithChildSuccessfully()
        {
            var input   = "fwft (72) -> ktlj, cntj, xhth";
            var program = Day7.Parse(input);

            Assert.Equal("fwft", program.Name);
            Assert.Equal(72, program.Weight);
            Assert.Equal(3, program?.ChildProgramNames.Length);
        }
예제 #27
0
        public void ParseNoChildSuccessfully()
        {
            var input   = "havc (66)";
            var program = Day7.Parse(input);

            Assert.Equal("havc", program.Name);
            Assert.Equal(66, program.Weight);
            Assert.Empty(program.ChildProgramNames);
        }
예제 #28
0
        public void Q2()
        {
            var inputs = Inputs.Day7.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
            var steps  = Day7.Parse(inputs);

            var result = Day7.Simulate(5, 60, steps);

            Assert.Equal(967, result);
        }
예제 #29
0
        public void CanParseStepsAndReturnThemInAlphaOrder()
        {
            var inputs = _testInput.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

            var results = Day7.Parse(inputs);

            Assert.Equal("A", results[0].Name);
            Assert.Equal("F", results[5].Name);
        }
예제 #30
0
        public void CanFindTheRightUnlockSequence()
        {
            var inputs = _testInput.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
            var steps  = Day7.Parse(inputs);

            var result = Day7.GetUnlockSequence(steps);

            Assert.Equal("CABDFE", result);
        }