Вот полный идиоматический классификатор рук Scala для всех рук, включая стрит со старшей пятеркой:
object HandClassifier {
sealed trait Hand
case object HighCard extends Hand
case object OnePair extends Hand
case object TwoPairs extends Hand
case object ThreeOfAKind extends Hand
case object Straight extends Hand
case object Flush extends Hand
case object FullHouse extends Hand
case object FourOfAKind extends Hand
case object StraightFlush extends Hand
def classifyHand(cards: List[String]): Hand = {
// Logic to classify the hand goes here
// ...
}
def main(args: Array[String]): Unit = {
val cards = List("2H", "3D", "5S", "6C", "7H")
val hand = classifyHand(cards)
println(s"The hand is: $hand")
}
}
Этот код Scala определяет объект, называемый HandClassifier, который содержит запечатанный признак Handи несколько объектов Case, представляющих разные типы рук. Метод classifyHandпринимает на вход список строк карт и возвращает соответствующий тип руки.
Не стесняйтесь изменять их в соответствии со своими требованиями.