///|
/// Exhaustive independent category-frequency check of all C(52,5) hands.
fn main {
  let deck = []
  for rank in ["2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K", "A"] {
    for suit in ["c", "d", "h", "s"] {
      deck.push(@holdem.parse_card(rank + suit).unwrap())
    }
  }
  let counts = Array::make(9, 0)
  for a in 0..<48 {
    for b in (a + 1)..<49 {
      for c in (b + 1)..<50 {
        for d in (c + 1)..<51 {
          for e in (d + 1)..<52 {
            let hand = @holdem.evaluate_five([
              deck[a],
              deck[b],
              deck[c],
              deck[d],
              deck[e],
            ]).unwrap()
            let category = match hand.category {
              HighCard => 0
              OnePair => 1
              TwoPair => 2
              ThreeOfAKind => 3
              Straight => 4
              Flush => 5
              FullHouse => 6
              FourOfAKind => 7
              StraightFlush => 8
            }
            counts[category] += 1
          }
        }
      }
    }
  }
  let expected = [1302540, 1098240, 123552, 54912, 10200, 5108, 3744, 624, 40]
  if counts != expected {
    abort("Five-card category frequencies do not match")
  }
  println("Verified all 2,598,960 five-card hands: category frequencies match.")
}