public string CraftPresent(string presentName) { Workshop workshop = new Workshop(); IPresent present = this.presentRepository.FindByName(presentName); var dwarfsReadyToWork = this.dwarfRepository .Models .Where(x => x.Energy >= 50) .OrderByDescending(x => x.Energy) .ToList(); if (!dwarfsReadyToWork.Any()) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } foreach (IDwarf dwarf in dwarfsReadyToWork) { workshop.Craft(present, dwarf); if (dwarf.Energy <= 0) { this.dwarfRepository.Remove(dwarf); } if (present.IsDone()) { break; } } string output = string.Format(present.IsDone() ? OutputMessages.PresentIsDone : OutputMessages.PresentIsNotDone, presentName); return(output); }
public string CraftPresent(string presentName) { IPresent present = this.presents.FindByName(presentName); List <IDwarf> dwarfsReadyToCraft = this.dwarfs.Models .Where(x => x.Energy >= 50) .OrderByDescending(x => x.Energy) .ToList(); StringBuilder sb = new StringBuilder(); if (dwarfsReadyToCraft.Count == 0) { throw new InvalidOperationException("There is no dwarf ready to start crafting!"); } foreach (var dwarf in dwarfsReadyToCraft) { this.workshop.Craft(present, dwarf); if (present.IsDone()) { break; } } sb.Append($"Present { present.Name} is "); if (present.IsDone()) { sb.Append("done."); } else { sb.Append("not done."); } RemoveDrawfsFromCollection(dwarfsReadyToCraft); return(sb.ToString().TrimEnd()); }
public void Craft(IPresent present, IDwarf dwarf) { IInstrument instrument = null; while (dwarf.Energy > 0 && dwarf.Instruments.Any(x => x.Power > 0)) { instrument = dwarf.Instruments.FirstOrDefault(x => x.Power > 0); while (!present.IsDone() && dwarf.Energy > 0 && !instrument.IsBroken()) { dwarf.Work(); instrument.Use(); present.GetCrafted(); } if (instrument.IsBroken()) { dwarf.Instruments.Remove(instrument); } if (present.IsDone()) { break; } } }
public void Craft(IPresent present, IDwarf dwarf) { while (dwarf.Energy > DwarfMinEnergy && dwarf.Instruments.Any()) { var currentInstrument = dwarf.Instruments.First(); while (!present.IsDone() && dwarf.Energy > DwarfMinEnergy && !currentInstrument.IsBroken()) { dwarf.Work(); present.GetCrafted(); currentInstrument.Use(); } if (currentInstrument.IsBroken()) { dwarf.Instruments.Remove(currentInstrument); } if (present.IsDone()) { break; } } }
public void Craft(IPresent present, IDwarf dwarf) { while (dwarf.Energy > 0 && dwarf.Instruments.Any()) // итерираме между инструментите { IInstrument currInstrument = dwarf.Instruments.First(); while (!present.IsDone() && dwarf.Energy > 0 && !currInstrument.IsBroken()) // правим подаръка { dwarf.Work(); // намаляме енергията present.GetCrafted(); // намаляме необходимото за правенето на подаръка currInstrument.Use(); // намаляме здравето на инструмента } if (currInstrument.IsBroken()) //ако заедно с направата на подарък се е счупил и инструмента !!!! { dwarf.Instruments.Remove(currInstrument); } if (present.IsDone()) //подаръка е готов и излизаме { break; } } }
public void Craft(IPresent present, IDwarf dwarf) { while (!present.IsDone() || dwarf.Energy > 0) { foreach (var instrument in dwarf.Instruments) { if (!instrument.IsBroken()) { instrument.Use(); present.GetCrafted(); if (instrument.Power <= 0) { instrument.IsBroken(); } if (present.IsDone()) { break; } else { instrument.Use(); present.GetCrafted(); } } } } }
public string CraftPresent(string presentName) { Workshop workshop = new Workshop(); IPresent present = this.presents.FindByName(presentName); // намираме подаръка ICollection <IDwarf> dwarves = this.dwarfs.Models.Where(dw => dw.Energy >= 50).OrderByDescending(dw => dw.Energy).ToList(); // намираме тези дуорфи, които имат енергия над 50 и ги подреждаме по нея if (!dwarves.Any()) // ако е празна колекцията { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } while (dwarves.Any()) { IDwarf currDwarf = dwarves.First(); workshop.Craft(present, currDwarf); if (!currDwarf.Instruments.Any()) // ако му свършат инструментите { dwarves.Remove(currDwarf); //махаме го само от локалната колекция !!! } if (currDwarf.Energy == 0) //ако му свърши енергията { dwarves.Remove(currDwarf); this.dwarfs.Remove(currDwarf); // премахваме го от двете колекции } if (present.IsDone()) { break; } } //string result; //if (present.IsDone()) //{ // result = string.Format(OutputMessages.PresentIsDone, presentName); //} //else //{ // result = string.Format(OutputMessages.PresentIsNotDone, presentName); //} //return result; string result = string.Format(present.IsDone() ? OutputMessages.PresentIsDone : OutputMessages.PresentIsNotDone, presentName); return(result); }
public string CraftPresent(string presentName) { IPresent present = this.presents.FindByName(presentName); IDwarf dwarf = dwarves.Models .Where(d => d.Energy >= 50) .OrderByDescending(d => d.Energy) .FirstOrDefault(d => d.Instruments.Count > 0); Workshop workshop = new Workshop(); while (dwarves.Models.Any(d => d.Energy >= 50)) { if (dwarf == null) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } workshop.Craft(present, dwarf); if (dwarf.Energy == 0) { this.dwarves.Remove(dwarf); } if (present.IsDone()) { break; } if (!dwarf.Instruments.Any(i => i.Power > 0)) { break; } } string result; if (present.IsDone()) { result = string.Format(OutputMessages.PresentIsDone, presentName); } else { result = string.Format(OutputMessages.PresentIsNotDone, presentName); } return(result); }
public string CraftPresent(string presentName) { IPresent present = presentRepository.FindByName(presentName); var dwarfsReady = dwarfRepository.Models.OrderByDescending(x => x.Energy).Where(x => x.Energy >= 50).ToList(); var workShop = new Workshop(); if (!dwarfsReady.Any()) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } while (dwarfsReady.Any()) { IDwarf currentDwarf = dwarfsReady.First(); workShop.Craft(present, currentDwarf); dwarfsReady.Remove(currentDwarf); } if (present.IsDone()) { return(string.Format(OutputMessages.PresentIsDone, present.Name)); } else { return(string.Format(OutputMessages.PresentIsNotDone, present.Name)); } }
public void Craft(IPresent present, IDwarf dwarf) { var instruments = dwarf.Instruments.ToList(); while (true) { if (dwarf.Energy <= 0 || present.IsDone()) { break; } if (instruments[0].IsBroken()) { dwarf.Instruments.Remove(instruments[0]); instruments.RemoveAt(0); if (instruments.Count > 0) { continue; } else { break; } } instruments[0].Use(); dwarf.Work(); present.GetCrafted(); } }
public void Craft(IPresent present, IDwarf dwarf) { while (!present.IsDone() && dwarf.Instruments.Any(x => !x.IsBroken())) { present.GetCrafted(); dwarf.Instruments.FirstOrDefault(x => x.IsBroken() == false).Use(); } }
public void Craft(IPresent present, IDwarf dwarf) { while (dwarf.Energy > 0 && dwarf.Instruments.Sum(el => el.Power) > 0 && !present.IsDone()) { dwarf.Work(); dwarf.Instruments.First(el => !el.IsBroken()).Use(); present.GetCrafted(); } }
public string CraftPresent(string presentName) { Workshop workshop = new Workshop(); IPresent present = this.presents.FindByName(presentName); ICollection <IDwarf> dwarves = this.dwarfs .Models .Where(x => x.Energy >= 50) .OrderByDescending(x => x.Energy) .ToList(); if (!dwarves.Any()) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } while (dwarves.Any()) { IDwarf currentDwarf = dwarves.First(); workshop.Craft(present, currentDwarf); if (!currentDwarf.Instruments.Any()) { dwarves.Remove(currentDwarf); } if (currentDwarf.Energy == 0) { dwarves.Remove(currentDwarf); this.dwarfs.Remove(currentDwarf); } if (present.IsDone()) { break; } } string output = string.Format(present.IsDone() ? OutputMessages.PresentIsDone : OutputMessages.PresentIsNotDone, presentName); return(output); }
public string CraftPresent(string presentName) { IPresent present = this.presents.FindByName(presentName); ICollection <IDwarf> sortedDwarfs = this.dwarfs.Models.Where(x => x.Energy >= 0).OrderByDescending(x => x.Energy).ToList(); if (!sortedDwarfs.Any()) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } while (sortedDwarfs.Any()) { var dwarfThatCraft = sortedDwarfs.FirstOrDefault(); Workshop workshop = new Workshop(); workshop.Craft(present, dwarfThatCraft); if (!dwarfThatCraft.Instruments.Any()) { sortedDwarfs.Remove(dwarfThatCraft); } if (dwarfThatCraft.Energy == 0) { sortedDwarfs.Remove(dwarfThatCraft); this.dwarfs.Remove(dwarfThatCraft); } if (present.IsDone()) { break; } } var result = present.IsDone() ? string.Format(OutputMessages.PresentIsDone, presentName) : string.Format(OutputMessages.PresentIsNotDone, presentName); return(result); }
public string CraftPresent(string presentName) { IWorkshop workshop = new Workshop(); IPresent present = this.presents.FindByName(presentName); var readyDwarfs = this.dwarfs.Models.Where(d => d.Energy >= 50).OrderByDescending(a => a.Energy).ToList(); if (readyDwarfs.Count > 0) { for (int i = 0; i < readyDwarfs.Count;) { workshop.Craft(present, readyDwarfs[i]); if (readyDwarfs[i].Energy == 0) { this.dwarfs.Remove(readyDwarfs[i]); i++; } if (present.IsDone()) { break; } if (!present.IsDone() || readyDwarfs[i].Instruments.Count == 0) { i++; } } } else { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } if (present.IsDone()) { return($"Present {presentName} is done."); } else { return($"Present {presentName} is not done."); } }
//The dwarf starts crafting the present.This is only possible, //if the dwarf has energy and an instrument that isn't broken. //At the same time the present is getting crafted, so call the GetCrafted() method for the present. //Keep working until the present is done or the dwarf has energy and instruments to use. //If at some point the power of the current instrument reaches or drops below 0, //meaning it is broken, then the dwarf should take the next instrument from its collection, if it has any left. public void Craft(IPresent present, IDwarf dwarf) { if (dwarf.Energy > 0 && dwarf.Instruments.Any(i => i.Power > 0)) { while ((dwarf.Energy > 0 && dwarf.Instruments.Any(i => i.Power > 0)) || !present.IsDone()) { dwarf.Work(); present.GetCrafted(); } } }
public void Craft(IPresent present, IDwarf dwarf) { while (dwarf.Energy > 0 && dwarf.Instruments.Count != 0) { IInstrument currentInstrument = dwarf.Instruments.First(i => !i.IsBroken()); while (dwarf.Energy > 0 && currentInstrument.IsBroken() == false && present.IsDone() == false) { dwarf.Work(); present.GetCrafted(); currentInstrument.Use(); } if (currentInstrument.IsBroken()) { dwarf.Instruments.Remove(currentInstrument); } if (present.IsDone()) { break; } } }
public void Craft(IPresent present, IDwarf dwarf) { while (dwarf.Energy > 0 && dwarf.Instruments.Any()) { IInstrument currInstrument = dwarf.Instruments.First(); while (!present.IsDone() && dwarf.Energy > 0 && !currInstrument.IsBroken()) { dwarf.Work(); present.GetCrafted(); currInstrument.Use(); } if (currInstrument.IsBroken()) { dwarf.Instruments.Remove(currInstrument); } if (present.IsDone()) { break; } } //public void Craft(IPresent present, IDwarf dwarf) //{ // var currInstrument = dwarf.Instruments.FirstOrDefault(i => !(i.IsBroken())); // if (dwarf.Energy > 0 && currInstrument != null) // { // dwarf.Work(); // present.GetCrafted(); // currInstrument.Use(); // } // if (!present.IsDone() && dwarf.Energy > 0 && dwarf.Instruments.Any()) // { // this.Craft(present, dwarf); // } //} }
public void Craft(IPresent present, IDwarf dwarf) { while (dwarf.Energy > 0 || !present.IsDone() || dwarf.Instruments.Any(x => !x.IsBroken())) { foreach (var instrument in dwarf.Instruments) { while (!instrument.IsBroken()) { instrument.Use(); dwarf.Work(); present.GetCrafted(); } } } }
public void Craft(IPresent present, IDwarf dwarf) { foreach (var instrument in dwarf.Instruments) { while (!instrument.IsBroken()) { if (dwarf.Energy == 0) { break; } present.GetCrafted(); dwarf.Work(); instrument.Use(); if (present.IsDone()) { break; } } if (present.IsDone()) { break; } } }
public string CraftPresent(string presentName) { IPresent present = this.presents.Models.FirstOrDefault(p => p.Name == presentName); ICollection <IDwarf> suitableDwarves = this.dwarfs.Models.Where(d => d.Energy >= 50).OrderByDescending(d => d.Energy).ToList(); if (suitableDwarves.Count == 0) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } Workshop workshop = new Workshop(); while (suitableDwarves.Any()) { IDwarf currentDwarf = suitableDwarves.First(); workshop.Craft(present, currentDwarf); if (currentDwarf.Instruments.Count == 0) { suitableDwarves.Remove(currentDwarf); } if (currentDwarf.Energy == 0) { suitableDwarves.Remove(currentDwarf); this.dwarfs.Remove(currentDwarf); } if (present.IsDone()) { break; } } if (present.IsDone()) { craftedPresentsCount++; return(String.Format(OutputMessages.PresentIsDone, presentName)); } return(String.Format(OutputMessages.PresentIsNotDone, presentName)); }
public void Craft(IPresent present, IDwarf dwarf) { if (dwarf.Energy > 0 && dwarf.Instruments.Any(i => i.IsBroken() == false)) { while (true) { if (present.IsDone() || dwarf.Energy <= 0 || dwarf.Instruments.All(i => i.IsBroken())) { break; } present.GetCrafted(); dwarf.Work(); } } }
public void Craft(IPresent present, IDwarf dwarf) { var instrument = dwarf.Instruments.FirstOrDefault(x => x.IsBroken() == false); while (present.IsDone() == false && dwarf.Energy > 0 && instrument != null) { present.GetCrafted(); instrument.Use(); dwarf.Work(); if (instrument.IsBroken()) { instrument = dwarf.Instruments.FirstOrDefault(x => x.IsBroken() == false); } } }
public void Craft(IPresent present, IDwarf dwarf) { while (!present.IsDone() && dwarf.Energy != 0) { var currInstrument = dwarf.Instruments.FirstOrDefault(x => !(x.IsBroken())); if (currInstrument != null && !currInstrument.IsBroken()) { dwarf.Work(); currInstrument.Use(); present.GetCrafted(); } else { break; } } }
public void Craft(IPresent present, IDwarf dwarf) { while (true) { var currentInstrument = dwarf.Instruments.FirstOrDefault(); while (dwarf.Energy > 0 && currentInstrument.IsBroken() == false && present.IsDone() == false) { dwarf.Work(); present.GetCrafted(); } if (currentInstrument.IsBroken()) { dwarf.Instruments.Remove(currentInstrument); } } }
public void Craft(IPresent present, IDwarf dwarf) { var currentInstrument = dwarf.Instruments.FirstOrDefault(x => x.Power > 0); while (dwarf.Energy > 0 && dwarf.Instruments.Any(x => x.Power > 0)) { dwarf.Work(); currentInstrument.Use(); present.GetCrafted(); if (currentInstrument.IsBroken()) { currentInstrument = dwarf.Instruments.FirstOrDefault(x => x.Power > 0); } if (present.IsDone()) { break; } } }
public string CraftPresent(string presentName) { var readyToWorkdwarfs = new List <IDwarf>(); foreach (var dwarf in dwarfs.Models) { if (dwarf.Energy >= 50 && dwarf.Instruments.Any(x => x.IsBroken() == false)) { readyToWorkdwarfs.Add(dwarf); } } if (readyToWorkdwarfs == null) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } present = presents.FindByName(presentName); foreach (var currentDwarf in readyToWorkdwarfs) { //readyToWorkdwarfs = dwarfs.Models.Where(x => x.Energy >= 50); currentDwarf.Work(); var currentInstrument = currentDwarf.Instruments.FirstOrDefault(x => x.IsBroken() == false); //currentInstrument.Use(); if (currentInstrument.IsBroken()) { brokenOnes++; } present.GetCrafted(); workshop.Craft(present, currentDwarf); if (currentDwarf.Energy == 0) { dwarfs.Remove(currentDwarf); } if (present.IsDone()) { countCraftedPresents++; return(string.Format(OutputMessages.PresentIsDone, presentName)); } } return(string.Format(OutputMessages.PresentIsNotDone, presentName)); }
public void Craft(IPresent present, IDwarf dwarf) { if (dwarf.Instruments.Count == 0 || dwarf.Energy == 0) { return; } while (true) { present.GetCrafted(); dwarf.Work(); var instrument = dwarf.Instruments.FirstOrDefault(); instrument.Use(); if (present.IsDone()) { break; } if (dwarf.Energy == 0) { break; } if (instrument.IsBroken()) { dwarf.Instruments.Remove(instrument); instrument = dwarf.Instruments.FirstOrDefault(); if (instrument == null) { break; } } } }
public string CraftPresent(string presentName) { List <IDwarf> readyToWorkDwarves = dwarfs.Models.Where(el => el.Energy >= 50).OrderByDescending(el => el.Energy).ToList(); IPresent present = presents.FindByName(presentName); if (readyToWorkDwarves.Count == 0) { throw new InvalidOperationException(ExceptionMessages.DwarfsNotReady); } foreach (var dwarf in readyToWorkDwarves) { workshop.Craft(present, dwarf); if (dwarf.Energy == 0) { dwarfs.Remove(dwarf); } if (present.IsDone()) { return(string.Format(OutputMessages.PresentIsDone, presentName)); } } return(string.Format(OutputMessages.PresentIsNotDone, presentName)); }
public void Craft(IPresent present, IDwarf dwarf) { while (true) { if (dwarf.Energy > 0 && dwarf.Instruments.Any(i => !i.IsBroken())) { var instrument = dwarf.Instruments.FirstOrDefault(x => !x.IsBroken()); instrument.Use(); dwarf.Work(); present.GetCrafted(); if (present.IsDone()) { return; } } else { return; } } }