Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            long        part1    = 0;
            long        part2    = 0;
            List <long> sequence = null;

            Performance.TimeRun("Parse and solve (naive)", () =>
            {
                sequence          = TextFile.ReadPositiveLongList("input.txt");
                List <long> dummy = null;
                part1             = SolvePart1Naive(sequence, 25, ref dummy);
                part2             = SolvePart2(sequence, part1);
            }, 100, 1000);

            Performance.TimeRun("Parse (enumerate) and solve (naive)", () =>
            {
                var longs = TextFile.EnumeratePositiveLongs("input.txt");
                part1     = SolvePart1Naive(longs, 25, ref sequence);
                part2     = SolvePart2(sequence, part1);
            }, 100, 1000);

            Performance.TimeRun("Parse", () =>
            {
                sequence = TextFile.ReadPositiveLongList("input.txt");
            }, 100, 100);

            Performance.TimeRun("Solve part 1 (naive)", () =>
            {
                List <long> dummy = null;
                part1             = SolvePart1Naive(sequence, 25, ref dummy);
            }, 100, 100);

            Performance.TimeRun("Solve part 1 (ringbuffer)", () =>
            {
                part1 = SolvePart1Ringbuffer(sequence, 25);
            }, 100, 100);

            Performance.TimeRun("Solve part 1 (queues)", () =>
            {
                part1 = SolvePart1(sequence, 25);
            }, 100, 100);

            Performance.TimeRun("Solve part 2", () =>
            {
                part2 = SolvePart2(sequence, part1);
            }, 100, 10000);

            Console.WriteLine($"Found failed checksum: {part1}");
            Console.WriteLine($"Found weakness: {part2}");
        }