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... }
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(); } }