Example #1
0
        public void Run(string[] args)
        {
            IReader reader;

            if (args.Length > 0)
            {
                reader = new FileReader(args[0]);
            }
            else
            {
                reader = new ConsoleReader();
            }

            // Test code...
            //IntervalMergerTests.Run();
            //return;

            IntervalMerger intervalMerger = new IntervalMerger();

            while (!reader.EndOfStream)
            {
                var input = reader.ReadLine();
                if (string.IsNullOrEmpty(input))
                {
                    break;
                }

                //WriteLine($"Parsing {input}...");
                var split = input.Split('-');

                var min         = long.Parse(split[0]);
                var max         = long.Parse(split[1]);
                var newInterval = new Interval {
                    Min = min, Max = max
                };
                intervalMerger.Add(newInterval);
            }

            long totalSum = 0;

            foreach (var itvl in intervalMerger.Intervals)
            {
                long itvlLen = itvl.Max - itvl.Min + 1;
                totalSum += itvlLen;
            }

            WriteLine(4294967295L + 1 - totalSum); // +1 for the 0 IP...
        }
Example #2
0
        public void Run(string[] args)
        {
            IReader reader;

            if (args.Length > 0)
            {
                reader = new FileReader(args[0]);
            }
            else
            {
                reader = new ConsoleReader();
            }

            // Test code...
            //IntervalMergerTests.Run();
            //return;

            IntervalMerger intervalMerger = new IntervalMerger();

            while (!reader.EndOfStream)
            {
                var input = reader.ReadLine();
                if (string.IsNullOrEmpty(input))
                {
                    break;
                }

                //WriteLine($"Parsing {input}...");
                var split = input.Split('-');

                var min         = long.Parse(split[0]);
                var max         = long.Parse(split[1]);
                var newInterval = new Interval {
                    Min = min, Max = max
                };
                intervalMerger.Add(newInterval);
            }

            foreach (var itvl in intervalMerger.Intervals)
            {
                Write(itvl.Min);
                Write("-", Green);
                Write(itvl.Max);

                WriteLine();
            }
        }