Классификатор рук Scala: полный код для классификации покерных рук

Вот полный идиоматический классификатор рук 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принимает на вход список строк карт и возвращает соответствующий тип руки.

Не стесняйтесь изменять их в соответствии со своими требованиями.