Ejemplo n.º 1
0
        public void Part2()
        {
            var competitors = new List <Competitor>();

            extractCompetitors(competitors, inputString);
            for (int i = 0; i < 2503; i++)
            {
                var comparer = new GeneralizedComparer <int>();
                var score    = new SortedList <int, Competitor>(comparer);
                foreach (var c in competitors)
                {
                    c.Tick();
                    score.Add(c.Distance, c);
                }
                int lastDistance = score.Last().Value.Distance;
                foreach (var s in score.Reverse())
                {
                    if (s.Value.Distance != lastDistance)
                    {
                        break;
                    }
                    s.Value.Points += 1;
                }
            }
            int bestScore = int.MinValue;

            foreach (var c in competitors)
            {
                Console.WriteLine($"{c.Name}: {c.Points}");
                bestScore = Math.Max(bestScore, c.Points);
            }
            Console.WriteLine($"Best score: {bestScore}");
        }
Ejemplo n.º 2
0
        public void Part2Examples()
        {
            var competitors = new List <Competitor>();

            extractCompetitors(competitors, exampleInput);
            for (int i = 0; i < 1000; i++)
            {
                var comparer = new GeneralizedComparer <int>();
                var score    = new SortedList <int, Competitor>(comparer);
                foreach (var c in competitors)
                {
                    c.Tick();
                    score.Add(c.Distance, c);
                }
                int lastDistance = score.Last().Value.Distance;
                foreach (var s in score.Reverse())
                {
                    if (s.Value.Distance != lastDistance)
                    {
                        break;
                    }
                    s.Value.Points += 1;
                }
            }
            foreach (var c in competitors)
            {
                Console.WriteLine($"{c.Name}: {c.Points}");
            }
        }