//Tested private static void WriteOutputFile(OutPutFile outPut) { string createText = outPut.DeliveredPizza + Environment.NewLine; foreach (var op in outPut.Delivery) { var deliveredPizza = op.TeamType + " " + string.Join(" ", op.Pizza); createText += deliveredPizza + Environment.NewLine; } File.WriteAllText(path + fileName + "_Output.txt", createText); }
static void Main(string[] args) { try { EvenMorePizza EvenMorePizza = ReadInputFile(path + fileName); OutPutFile outPutFile = UniqueIngPizzaDelivery(EvenMorePizza); WriteOutputFile(outPutFile); } catch (Exception exc) { Console.WriteLine(exc.Message); } }
private static OutPutFile UniqueIngPizzaDelivery(EvenMorePizza evenMorePizza) { bool t4Fed = false; EvenMorePizza archivePizza = ObjectCopier.CloneJson(evenMorePizza); OutPutFile outPutFile = new OutPutFile(); outPutFile.DeliveredPizza = 0; int totalPizza = evenMorePizza.AvailablePizza; List <Delivery> deliveries = new List <Delivery>(); int T2 = evenMorePizza.Team2ppl, T3 = evenMorePizza.Team3ppl, T4 = evenMorePizza.Team4ppl; int NofTeams = evenMorePizza.Team2ppl + evenMorePizza.Team3ppl + evenMorePizza.Team4ppl; int totalppl = (T2 * 2) + (T3 * 3) + (T4 * 4); if (totalPizza != totalppl) { int t4Ate = (totalPizza - (T4 * 4)); t4Fed = t4Ate > 0; if (t4Ate >= (T3 * 3)) { int t4t3Ate = (t4Ate - (T3 * 3)); bool t4t3Fed = t4t3Ate > 0; int t2Left = (T2 * 2); bool t2Fed = (totalPizza - (T2 * 2)) > 0; } } //----- int i = 0; //do { try { totalPizza = evenMorePizza.Pizzas.Count; Console.WriteLine("Pizza Left: " + totalPizza + "\n- - - - - - -\n"); totalppl = (evenMorePizza.Team2ppl * 2) + (T3 = evenMorePizza.Team3ppl * 3) + (evenMorePizza.Team4ppl * 4); Console.WriteLine("Pizza PPL: " + totalppl + "\n- - - - - - -\n"); Console.WriteLine("evenMorePizza.Team4ppl\n- - - - - - -\n"); } catch { } if (evenMorePizza.Team4ppl > 0 && (totalPizza > 0)) { int Team4pplIndex = 0; do { var pizzads = new List <string>(); totalPizza = evenMorePizza.Pizzas.Count; if ((totalPizza >= (4 * evenMorePizza.Team4ppl)) && (totalPizza % 4 >= 0)) { List <int> pizzaindx = new List <int>(); List <string> LastPizzaIng = new List <string>(); var Pizza = GiveMePizza(pizzads, evenMorePizza, archivePizza, 4); if (Pizza.Count > 0) { pizzaindx.AddRange(Pizza); evenMorePizza.Pizzas.RemoveAll(p => Pizza.Contains(p.Id)); } if (pizzaindx.Count == 4) { deliveries.Add(new Delivery(4, pizzaindx, LastPizzaIng)); outPutFile.Delivery = deliveries; if (outPutFile.Delivery.Count() % (10 * 4) == 0) { double teampercent = (double)100 / NofTeams; double percent = (outPutFile.Delivery.Count() * teampercent); Console.WriteLine(percent + " => " + outPutFile.Delivery.Count() + " - Delivery / " + NofTeams); } i++; Team4pplIndex++; } } evenMorePizza.Team4ppl -= 1; } while (evenMorePizza.Team4ppl > 0); try { Console.WriteLine("Pizza Left: " + totalPizza + "\n- - - - - - -\n"); totalppl = (evenMorePizza.Team2ppl * 2) + (T3 = evenMorePizza.Team3ppl * 3) + (evenMorePizza.Team4ppl * 4); Console.WriteLine("Pizza PPL: " + totalppl + "\n- - - - - - -\n"); Console.WriteLine("evenMorePizza.Team3ppl\n- - - - - - -\n"); Console.WriteLine(outPutFile.Delivery.Count()); totalPizza = evenMorePizza.Pizzas.Count; } catch { } if (evenMorePizza.Team3ppl > 0 && (totalPizza > 0)) { int Team3pplIndex = 0; do { var pizzads = new List <string>(); totalPizza = evenMorePizza.Pizzas.Count; if ((totalPizza >= (3 * evenMorePizza.Team3ppl)) && (totalPizza % 3 >= 0)) { List <int> pizzaindx = new List <int>(); List <string> LastPizzaIng = new List <string>(); var Pizza = GiveMePizza(pizzads, evenMorePizza, archivePizza, 3); if (Pizza.Count > 0) { pizzaindx.AddRange(Pizza); var removePizza = evenMorePizza.Pizzas.RemoveAll(p => Pizza.Contains(p.Id)); } if (pizzaindx.Count == 3) { deliveries.Add(new Delivery(3, pizzaindx, LastPizzaIng)); outPutFile.Delivery = deliveries; if (outPutFile.Delivery.Count() % (10 * 3) == 0) { double teampercent = (double)100 / NofTeams; double percent = (outPutFile.Delivery.Count() * teampercent); Console.WriteLine(percent + " => " + outPutFile.Delivery.Count() + " - Delivery / " + NofTeams); } i++; Team3pplIndex++; } } evenMorePizza.Team3ppl -= 1; } while (evenMorePizza.Team3ppl > 0); } try { totalPizza = evenMorePizza.Pizzas.Count; Console.WriteLine("Pizza Left: " + totalPizza + "\n- - - - - - -\n"); totalppl = (evenMorePizza.Team2ppl * 2) + (T3 = evenMorePizza.Team3ppl * 3) + (evenMorePizza.Team4ppl * 4); Console.WriteLine("Pizza PPL: " + totalppl + "\n- - - - - - -\n"); Console.WriteLine("evenMorePizza.Team2ppl\n- - - - - - -\n"); Console.WriteLine(outPutFile.Delivery.Count()); } catch { } if (evenMorePizza.Team2ppl > 0 && (totalPizza > 0)) { int Team2pplIndex = 0; do { var pizzads = new List <string>(); totalPizza = evenMorePizza.Pizzas.Count; if ((totalPizza >= (2 * evenMorePizza.Team2ppl)) && (totalPizza % 2 >= 0)) { List <string> LastPizzaIng = new List <string>(); List <int> pizzaindx = new List <int>(); { var Pizza = GiveMePizza(pizzads, evenMorePizza, archivePizza, 2); if (Pizza.Count > 0) { pizzaindx.AddRange(Pizza); var removePizza = evenMorePizza.Pizzas.RemoveAll(p => Pizza.Contains(p.Id)); } } if (pizzaindx.Count == 2) { deliveries.Add(new Delivery(2, pizzaindx, LastPizzaIng)); outPutFile.Delivery = deliveries; if (outPutFile.Delivery.Count() % (10 * 2) == 0) { double teampercent = (double)100 / NofTeams; double percent = (outPutFile.Delivery.Count() * teampercent); Console.WriteLine(percent + " => " + outPutFile.Delivery.Count() + " - Delivery / " + NofTeams); } i++; Team2pplIndex++; } } evenMorePizza.Team2ppl -= 1; } while (evenMorePizza.Team2ppl > 0); } } totalPizza = evenMorePizza.Pizzas.Count; } //while (totalPizza > 0); outPutFile.DeliveredPizza = deliveries.Count(); return(outPutFile); }