private bool TryToPlaceAnimalWithCarnivores(Animal animal, Wagon wagon) { if (wagon.IsBigger(animal)) { AddAnimalToWagon(wagon, animal); return(true); } return(false); }
public void performAddToWagon() { animals = animals.OrderBy(animal => animal.getSize()).ToList(); List <Animal> herbivores = animals.Where(animal => animal.getConsumptionType().Equals(ConsumptionType.HERBIVORE)).ToList(); List <Wagon> wagons = animals.Where(animal => animal.getConsumptionType().Equals(ConsumptionType.CARNIVORE)).Select(animal => { var newWagon = new Wagon(); newWagon.addAnimal(animal); return(newWagon); }).ToList(); int wagonamount = 0; foreach (Animal herbivore in herbivores) { while (true) { if (wagons[wagonamount].canAnimalBeAdded(herbivore)) { wagons[wagonamount].addAnimal(herbivore); wagonamount = 0; break; } else if (wagonamount + 1 < wagons.Count) { wagonamount++; } else { var newWagon = new Wagon(); newWagon.addAnimal(herbivore); wagons.Add(newWagon); wagonamount++; break; } } } foreach (Wagon wagon in wagons) { foreach (Animal animal in wagon.filledAnimals) { animals.Remove(animal); } madeWagons.Add(wagon); } }
private bool TryToPlaceAnimal(Animal animal, Wagon wagon) { if (!wagon.ContainsCarnivore()) { // Because of SortAnimalsList() I assume it can't be a Carnivore that gets added with Herbivores. AddAnimalToWagon(wagon, animal); return(true); } else { if (TryToPlaceAnimalWithCarnivores(animal, wagon)) { return(true); } } return(false); }
public void AddAnimalToWagon(Wagon wagon, Animal animal) { wagon.AddAnimalToWagon(animal); AnimalsToAdd.Remove(animal); }