static void Main(string[] args) { ValidatorService validatorService = new ValidatorService(); FiltrService filtrService = new FiltrService(); CitiesController citiesController = new CitiesController(validatorService, filtrService); FiltrData data = new FiltrData { Cities = new City[] { new City { Budget = 1000, Name = "Moscow", Point = new Point { X = 1, Y = 1 } }, new City { Budget = 700, Name = "Piter", Point = new Point { X = 1, Y = 2 } }, new City { Budget = 300, Name = "Tver", Point = new Point { X = 2, Y = 1 } } }, Options = new FiltrOptions { Iterations = 12, PercentBet = 0.06 } }; citiesController.FiltrData(data); }
public IEnumerable <City> FiltrData(FiltrData filtrData) { if (!_validator.IsValid(filtrData)) { throw new Exception("данные не валидны"); } IEnumerable <City> result = _service.Filter(filtrData); return(result); }
public bool IsValid(FiltrData filterData) { Point[] allCoordinates = new Point[filterData.Cities.Count()]; foreach (City i in filterData.Cities.ToArray()) { if (IsNameValid(i) && IsBudgetValid(i) && IsPointValid(i, allCoordinates)) { return(false); } allCoordinates.Append(i.Point); } return(IsOptionsValid(filterData)); }
public IEnumerable <City> Filter(FiltrData filtrData) { IEnumerable <City> cities = SherchNeighbor(filtrData.Cities); double[] BudgetForNeighbors = new double[cities.Count()]; for (int i = 0; i < filtrData.Options.Iterations; i++) { // отнимаем бюджет который надо отнять for (int count = 0; count < cities.Count(); count++) { BudgetForNeighbors[count] = cities.ElementAt(count).Budget / filtrData.Options.PercentBet; cities.ElementAt(count).Budget -= BudgetForNeighbors[count] * cities.ElementAt(count).neighbors.Count(); } cities = GiveBudget(cities, BudgetForNeighbors); } return(cities); }
private bool IsOptionsValid(FiltrData data) { return(data.Options.Iterations > 0 || data.Options.PercentBet > 0 || data.Options.PercentBet < 1); }