В качестве домашнего задания мне дали класс карт, в котором перечислены типы для ранга и масти. Мне нужно сравнить две покерные комбинации (каждая рука представляет собой ArrayList
из 5 карт) и определить победителя.
Меня очень беспокоит функция isStraight()
, потому что после туза приходится начинать заново. Например,
КОРОЛЕВА, КОРОЛЬ, ТУЗ, ДВОЙКА, ТРИ
До сих пор считается натуралом. Как лучше всего закодировать эту функциональность?
Вот код нумерованного типа Ранг/Масть, если это поможет.
public enum Rank
{
TWO(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(9),
TEN(10), JACK(11), QUEEN(12), KING(13), ACE(14);
private final int points;
private Rank(int points)
{
this.points = points;
}
public int points()
{
return this.points;
}
}
public enum Suit
{
DIAMONDS, CLUBS, HEARTS, SPADES;
}