private Hand FindBestTwoPair(Hand handOne, Hand handTwo) { var repeatingCardsComparer = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo); var bestPairHand = repeatingCardsComparer.DetermineStrongestHand(2); if (bestPairHand != null) { return bestPairHand; } return repeatingCardsComparer.DetermineStrongestHand(1); }
public Hand IdentifyHighestMultiples(GroupsOfCardsOfSameValueTieBreaker repeatingCardsComparer) { Hand bestHand = null; bestHand = repeatingCardsComparer.DetermineStrongestHand(4); if (bestHand != null) { return bestHand; } return repeatingCardsComparer.DetermineStrongestHand(1); }
private static Hand GetFullHouseWinner(Hand handOne, Hand handTwo) { var strongerRepeatingCards = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo); var highestThreeOfAKindHand = strongerRepeatingCards.DetermineStrongestHand(3); if (highestThreeOfAKindHand != null) return highestThreeOfAKindHand; var highestPairHand = strongerRepeatingCards.DetermineStrongestHand(2); return highestPairHand; }
private Hand FindBestHand(Hand handTwo, Hand handOne) { var repeatingCardsComparer = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo); var bestThreeOfAKindHand = repeatingCardsComparer.DetermineStrongestHand(3) ; if (bestThreeOfAKindHand != null) { return bestThreeOfAKindHand; } var bestKickerHand = repeatingCardsComparer.DetermineStrongestHand(1); return bestKickerHand; }
public Hand DetermineStrongestHand(Hand handOne, Hand handTwo) { Hand bestHand = null; var handSize = handOne.GetCards().Count; handOne.ArrangeCardsHighToLow(); handTwo.ArrangeCardsHighToLow(); var kickerBreaker = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo); bestHand = kickerBreaker.DetermineStrongestHand(1); for (var i = 0; i < handSize; i++) { if (handOne.GetCards()[i].GetCardValue() > handTwo.GetCards()[i].GetCardValue()) { bestHand = handOne; break; } if (handTwo.GetCards()[i].GetCardValue() > handOne.GetCards()[i].GetCardValue()) { bestHand = handTwo; break; } } return bestHand; }
public void Should_Return_Null_If_Multiples_Are_The_Same() { var handOne = HandBuilder.FivePairsHighFifthPair(); var handTwo = HandBuilder.FivePairsHighFifthPair(); var pairBreaker = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo); var result = pairBreaker.DetermineStrongestHand(2); Assert.IsNull(result); }
public void Should_Not_Be_Affected_By_Different_Multiples() { var handOne = HandBuilder.FourOfAKindKings(); var handTwo = HandBuilder.TwoPairSevensOverTwosFourKicker(); var pairBreaker = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo); var result = pairBreaker.DetermineStrongestHand(2); Assert.That(result.Equals(handTwo)); }
public void Same_Hand_Should_Result_In_Draw() { var handOne = HandBuilder.HighCardAce(); var handTwo = HandBuilder.HighCardAce(); var pairBreaker = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo); var result = pairBreaker.DetermineStrongestHand(2); Assert.IsNull(result); }
public void Should_Check_Subsequent_Multiples_If_Previous_Multiples_Are_Equal_Until_Multiples_Exhausted() { var handOne = HandBuilder.FivePairsHighFifthPair(); var handTwo = HandBuilder.FivePairsLowFifthPair(); var pairBreaker = new GroupsOfCardsOfSameValueTieBreaker(handOne, handTwo); var result = pairBreaker.DetermineStrongestHand(2); Assert.That(result.Equals(handOne)); }