/// <summary> /// Initializes a new instance of the <see cref="DistanceBasedFireworkSelector"/> class. /// </summary> /// <param name="distanceCalculator">The distance calculator.</param> /// <param name="extremumFireworkSelector">The extremum firework selector.</param> /// <param name="locationsNumber">The number of <see cref="Firework"/>s to be selected.</param> /// <exception cref="System.ArgumentNullException"> if <paramref name="distanceCalculator"/> /// or <paramref name="extremumFireworkSelector"/> is <c>null</c>. /// </exception> public DistanceBasedFireworkSelector(IDistance distanceCalculator, IExtremumFireworkSelector extremumFireworkSelector, int locationsNumber) : base(locationsNumber) { if (distanceCalculator == null) { throw new ArgumentNullException(nameof(distanceCalculator)); } if (extremumFireworkSelector == null) { throw new ArgumentNullException(nameof(extremumFireworkSelector)); } this.distanceCalculator = distanceCalculator; this.extremumFireworkSelector = extremumFireworkSelector; }
/// <summary> /// Initializes a new instance of the <see cref="Exploder"/> class. /// </summary> /// <param name="settings">The exploder settings.</param> /// <param name="extremumFireworkSelector">The extremum firework selector.</param> /// <exception cref="System.ArgumentNullException"> if <paramref name="settings"/> /// or <paramref name="extremumFireworkSelector"/> is <c>null</c>.</exception> public Exploder(ExploderSettings settings, IExtremumFireworkSelector extremumFireworkSelector) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (extremumFireworkSelector == null) { throw new ArgumentNullException(nameof(extremumFireworkSelector)); } this.settings = settings; this.extremumFireworkSelector = extremumFireworkSelector; this.minAllowedExplosionSparksNumberExact = settings.ExplosionSparksNumberLowerBound * settings.ExplosionSparksNumberModifier; this.maxAllowedExplosionSparksNumberExact = settings.ExplosionSparksNumberUpperBound * settings.ExplosionSparksNumberModifier; this.minAllowedExplosionSparksNumber = (int)Math.Round(this.minAllowedExplosionSparksNumberExact, MidpointRounding.AwayFromZero); this.maxAllowedExplosionSparksNumber = (int)Math.Round(this.maxAllowedExplosionSparksNumberExact, MidpointRounding.AwayFromZero); }
public ExploderTests() { this.extremumFireworkSelector = new ExtremumFireworkSelector(ProblemTarget.Minimum); this.exploder = new Exploder(new ExploderSettings(), this.extremumFireworkSelector); }
/// <summary> /// Initializes a new instance of the <see cref="DistanceBasedFireworkSelector"/> class. /// </summary> /// <param name="distanceCalculator">The distance calculator.</param> /// <param name="extremumFireworkSelector">The extremum firework selector.</param> /// <remarks>It is assumed that number of <see cref="Firework"/>s to be selected /// differs from step to step and hence is passed to the <c>Select</c> method.</remarks> public DistanceBasedFireworkSelector(IDistance distanceCalculator, IExtremumFireworkSelector extremumFireworkSelector) : this(distanceCalculator, extremumFireworkSelector, 0) { }