Ejemplo n.º 1
0
        private IPainter Reduce(double sqMeters)
        {
            TimeSpan time = TimeSpan.FromHours(
                1 /
                Painters
                .Where(painter => painter.IsAvailable)
                .Select(painter => 1 / painter.EstimateTimeToPaint(sqMeters).TotalHours)
                .Sum());

            double cost =
                this.Painters
                .Where(painter => painter.IsAvailable)
                .Select(painter =>
                        painter.EstimateCompensation(sqMeters) /
                        painter.EstimateTimeToPaint(sqMeters).TotalHours *
                        time.TotalHours)
                .Sum();

            return(new ProportionalPainter
            {
                TimePerSqrMeter = TimeSpan.FromHours(time.TotalHours / sqMeters),
                DollarsPerHour = cost / time.TotalHours
            });
        }
Ejemplo n.º 2
0
 private static IPainter FindCheapestPainter(double sqMeters, Painters painters) =>
 painters.GetAvailable().GetCheapestOne(sqMeters);
Ejemplo n.º 3
0
 private static IPainter FindFastesPainter(double sqMeters, Painters painters) =>
 painters.GetAvailable().GetFastestOne(sqMeters);