public OddCards(CardNomination[] cardNominations) { var nominations = cardNominations.OrderByDescending(n => n).ToArray(); MainCard = nominations.First(); var odd = nominations.Skip(1).ToArray(); Odd = odd.Any()? new OddCards(odd) : null; }
private static Tuple <CardNomination, Card[]> GetNominationWithLength(int length, Card[] cards, CardNomination exclude = null) { var group = (exclude == null ? cards : cards.Where(c => c.CardNomination != exclude)) .GroupBy(c => c.CardNomination).FirstOrDefault(g => g.Count() == length); var card = group == null? null : group.FirstOrDefault(); return(card == null ? null : new Tuple <CardNomination, Card[]>(card.CardNomination, cards.Where(c => c.CardNomination != card.CardNomination).ToArray())); }
public TwoPairs(CardNomination[] cardNominations) : base(2, cardNominations.Max()) { MinorCardNomination = cardNominations.Min(); }
public Pair(CardNomination cardNomination) : this(1, cardNomination) { }
protected Pair(int value, CardNomination mainCard) : base(value, mainCard) { }
public StraightFlush(CardNomination mainCard) : base(8, mainCard) { }
public FourOfAKind(CardNomination mainCard) : base(7, mainCard) { }
public FullHouse(CardNomination threeCardNomination, CardNomination pairCardNomination) : base(6, threeCardNomination) { PairCardNomination = pairCardNomination; }
public Combination(int value, CardNomination mainCard) { Value = value; MainCard = mainCard; }
public Straight(CardNomination cardNomination) : this(4, cardNomination) { }
protected Straight(int value, CardNomination mainCard) : base(value, mainCard) { }
public ThreeOfAKind(CardNomination mainCard) : base(3, mainCard) { }