Exemplo n.º 1
0
        public void Part1()
        {
            var parsed = Parse(Common.DayInput(nameof(Day23)));
            var game   = new CrabCups(parsed);

            for (int i = 0; i < 100; i++)
            {
                game.Move();
            }

            Assert.AreEqual("52937846", game.Result());
        }
Exemplo n.º 2
0
        public void Part1_Example1()
        {
            var parsed = Parse(Common.GetLines(example1));
            var game   = new CrabCups(parsed);

            for (int i = 0; i < 100; i++)
            {
                game.Move();
            }

            Assert.AreEqual("67384529", game.Result());
        }
Exemplo n.º 3
0
        public void Puzzle_23A()
        {
            var cc = new CrabCups(new[] { 6, 8, 5, 9, 7, 4, 2, 1, 3 });

            for (var i = 0; i < 100; i++)
            {
                cc.Move();
            }

            var result = cc.GetOrderFromOne().Aggregate("", (c, n) => $"{c}{n}");

            Assert.Equal("82635947", result);
        }
Exemplo n.º 4
0
        public void Example_1(int[] start, int turns, int[] expectedEnd)
        {
            var cc = new CrabCups(start);

            for (var i = 0; i < turns; i++)
            {
                cc.Move();
            }

            for (var i = 0; i < expectedEnd.Length; i++)
            {
                Assert.Equal(expectedEnd[i], cc.GetOrderFromOne().Skip(i).First());
            }
        }
Exemplo n.º 5
0
        public void Part2()
        {
            var parsed = Parse(Common.DayInput(nameof(Day23)), 1000000);

            Assert.AreEqual(1000000, Node.Count);

            var game = new CrabCups(parsed);

            for (int i = 0; i < 10000000; i++)
            {
                game.Move();
            }

            Assert.AreEqual(8456532414, game.Result2());
        }
Exemplo n.º 6
0
        public void Part2_Example1()
        {
            var parsed = Parse(Common.GetLines(example1), 1000000);

            Assert.AreEqual(1000000, Node.Count);

            var game = new CrabCups(parsed);

            for (int i = 0; i < 10000000; i++)
            {
                game.Move();
            }

            Assert.AreEqual(149245887792, game.Result2());
        }
Exemplo n.º 7
0
        public void Puzzle1()
        {
            var cups     = CupParser.Parse("394618527");
            var crabCups = new CrabCups(cups);

            for (var i = 0; i < 100; i++)
            {
                crabCups.PlayRound(3);
            }

            var finalPosition = crabCups.GetState(2);
            var s             = finalPosition.Aggregate(string.Empty, (current, value) => current + $", {value}");

            Assert.Equal(", 2, 3, 4, 1, 7, 8, 5, 6, 9", s);
        }
Exemplo n.º 8
0
        public void Puzzle_23B()
        {
            var firstNumbers = new List <int> {
                6, 8, 5, 9, 7, 4, 2, 1, 3
            };
            var following = Enumerable.Range(firstNumbers.Max() + 1, 1_000_000 - firstNumbers.Count);

            firstNumbers.AddRange(following);
            var cc = new CrabCups(firstNumbers);

            for (var i = 0; i < 10_000_000; i++)
            {
                cc.Move();
            }

            Assert.Equal(157047826689, (long)cc.GetOrderFromOne().First() * cc.GetOrderFromOne().Skip(1).First());
        }
Exemplo n.º 9
0
        public void Speeeeed()
        {
            var cupList = new List <int>();

            for (var i = 0; i < 19000; i++)
            {
                cupList.Add(i);
            }

            var crabCups = new CrabCups(cupList);

            for (var i = 0; i < 10000; i++)
            {
                crabCups.PlayRound(3);
            }

            var finalPosition = crabCups.GetState(2);
            var s             = finalPosition.Aggregate(string.Empty, (current, value) => current + $", {value}");
            // Assert.Equal(", 2, 3, 4, 1, 7, 8, 5, 6, 9", s);
        }
Exemplo n.º 10
0
        public void CrabCupsTest()
        {
            var cups     = CupParser.Parse("389125467");
            var crabCups = new CrabCups(cups);

            for (var i = 0; i < 10; i++)
            {
                _testOutputHelper.WriteLine($"Iteration: {i}");
                crabCups.PlayRound(3);
            }

            var finalPosition = crabCups.GetState(5);

            Assert.Equal(5, finalPosition[0]);
            Assert.Equal(8, finalPosition[1]);
            Assert.Equal(3, finalPosition[2]);
            Assert.Equal(7, finalPosition[3]);
            Assert.Equal(4, finalPosition[4]);
            Assert.Equal(1, finalPosition[5]);
            Assert.Equal(9, finalPosition[6]);
            Assert.Equal(2, finalPosition[7]);
            Assert.Equal(6, finalPosition[8]);
        }
Exemplo n.º 11
0
        public void Example_2()
        {
            var firstNumbers = new List <int> {
                3, 8, 9, 1, 2, 5, 4, 6, 7
            };
            var following = Enumerable.Range(firstNumbers.Max() + 1, 1_000_000 - firstNumbers.Count);

            firstNumbers.AddRange(following);
            var cc = new CrabCups(firstNumbers);
            var sw = new Stopwatch();

            sw.Start();
            for (var i = 0; i < 10_000_000; i++)
            {
                cc.Move();
            }
            sw.Stop();
            Console.WriteLine($"{sw.ElapsedMilliseconds}ms");

            Assert.Equal(934001, cc.GetOrderFromOne().First());
            Assert.Equal(159792, cc.GetOrderFromOne().Skip(1).First());

            Assert.Equal(149245887792, (long)cc.GetOrderFromOne().First() * cc.GetOrderFromOne().Skip(1).First());
        }