internal SlotProvider Parse(string[] args) { if (args.Length > 0) { var args_MAX_OFFSET_BETWEEN_SERVICES = Convert.ToInt32(args[0]); MAX_OFFSET_BETWEEN_SERVICES = args_MAX_OFFSET_BETWEEN_SERVICES; } log.Info("[START]"); var reader = new DelimitedFileReader(@"Tests\input.csv", 0, 0, ','); reader.SkipEmptyRows = true; List <CSVData> list = reader.ToList <CSVData>(); list.Remove(list.FindLast(x => true)); //trial thing? var slotProvider = new SlotProvider(list); //var someSlots = slotProvider.Provide(new Day(4)); return(slotProvider); }
static void Main(string[] args) { if (args.Length > 0) { var args_MAX_OFFSET_BETWEEN_SERVICES = Convert.ToInt32(args[0]); MAX_OFFSET_BETWEEN_SERVICES = args_MAX_OFFSET_BETWEEN_SERVICES; } log.Info("[START]"); var reader = new DelimitedFileReader(@"input.csv", 0, 0, ','); reader.SkipEmptyRows = true; List <CSVData> list = reader.ToList <CSVData>(); list.Remove(list.FindLast(x => true)); //trial thing? var slots = list.Select(CSVDataToSlot).ToArray(); //HashSet<char> allServices = new HashSet<char>() { 'L', 'T', 'P' }; //ServiceVariantSlot[] slots = new ServiceVariantSlot[] //{ // new ServiceVariantSlot() // { // Code = 'L', // StartTime = CalculateNumberOfMinutes(13), // EndTime = CalculateNumberOfMinutes(13,30) // }, // new ServiceVariantSlot() // { // Code = 'T', // StartTime = CalculateNumberOfMinutes(13), // EndTime = CalculateNumberOfMinutes(13,30) // }, // new ServiceVariantSlot() // { // Code = 'L', // StartTime = CalculateNumberOfMinutes(13,30), // EndTime = CalculateNumberOfMinutes(14) // }, // new ServiceVariantSlot() // { // Code = 'L', // StartTime = CalculateNumberOfMinutes(14), // EndTime = CalculateNumberOfMinutes(14,30) // }, // new ServiceVariantSlot() // { // Code = 'T', // StartTime = CalculateNumberOfMinutes(14,30), // EndTime = CalculateNumberOfMinutes(15) // }, // new ServiceVariantSlot() // { // Code = 'P', // StartTime = CalculateNumberOfMinutes(15), // EndTime = CalculateNumberOfMinutes(15,20) // }, // new ServiceVariantSlot() // { // Code = 'L', // StartTime = CalculateNumberOfMinutes(15), // EndTime = CalculateNumberOfMinutes(15,30) // } //}; //int?[][] M = new int?[6][] //{ // new int?[] {null, null, null, 60, 90, null}, // new int?[] {null, 30, null, 90, 90}, // new int?[] {null, 30, 60, null}, // new int?[] {null, 30, null}, // new int?[] {0, 0}, // new int?[] {null} //}; //var a = new Program(); //var matrix = a.GenerateMatrix(slots); // == M ////var R = a.Run(matrix, allServices, slots); //var R = a.RunRecursive(matrix, allServices, slots); Array.Sort(slots, delegate(ServiceVariantSlot s1, ServiceVariantSlot s2) { return(s1.StartTime - s2.StartTime); }); var alg = new Algorithm(MAX_OFFSET_BETWEEN_SERVICES); log.Info(String.Format("MAX_OFFSET_BETWEEN_SERVICES = {0}", MAX_OFFSET_BETWEEN_SERVICES)); var result = alg.Run(slots); var stringBuilder = new StringBuilder(); stringBuilder.AppendLine(); if (null != result) { result.OrderBy(b => b.SpareTime).ToList().ForEach(block => { stringBuilder.AppendLine($"BLOK (przerwy sumarycznie - {block.SpareTime} minut):"); block.ServiceVariantSlots.ToList().ForEach(slot => stringBuilder.AppendLine(PrintServiceVariantSlot(slot))); }); } else { stringBuilder.AppendLine("BRAK WYNIKU"); } log.Info(stringBuilder.ToString()); }