@Override
  public WeaponJudgingResult judgeWinningWeapon(Weapon weaponOne, Weapon weaponTwo) {
    validateNumberOfWeaponsOrFail();

    if (weaponOne.equals(weaponTwo)) {
      return WeaponJudgingResult.tie();
    } else {
      int numWeapons = Weapon.values().length;
      int mod = (numWeapons + weaponOne.ordinal() - weaponTwo.ordinal()) % numWeapons;
      if (mod % 2 == 1) {
        return new WeaponJudgingResult(weaponOne);
      } else {
        return new WeaponJudgingResult(weaponTwo);
      }
    }
  }