/// <summary>
 /// Simulates the battle between the attacking army and the defending army and returns the result.
 /// </summary>
 /// <param name="attacker">The attacking army.</param>
 /// <param name="defender">The defending army.</param>
 /// <param name="hitSelector">The <see cref="IHitSelector"/> to use when taking causualties.</param>
 /// <returns>A <see cref="BattleResult"/> representing the result of the battle.</returns>
 public static BattleResult Calculate(Army attacker, Army defender, IHitSelector hitSelector)
 {
     return new BattleSimulator(attacker, defender, hitSelector).Simulate();
 }
 /// <summary>
 /// Constructs a new <see cref="BattleSimulator"/> with the given attacking/defending armies and hit selector.
 /// </summary>
 /// <param name="attacker">The attacking army.</param>
 /// <param name="defender">The defending army.</param>
 /// <param name="hitSelector">The <see cref="IHitSelector"/> to use when taking causualties.</param>
 public BattleSimulator(Army attacker, Army defender, IHitSelector hitSelector)
 {
     Attacker    = attacker;
     Defender    = defender;
     HitSelector = hitSelector;
 }