Skip to content

Instantly share code, notes, and snippets.

@MarcinMoskala
Created May 25, 2018 19:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MarcinMoskala/499a3122898db6ec8e30e1a737828eb0 to your computer and use it in GitHub Desktop.
Save MarcinMoskala/499a3122898db6ec8e30e1a737828eb0 to your computer and use it in GitHub Desktop.
fun decide(hand: Hand, casinoCard: Int, firstTurn: Boolean): Decision = when {
firstTurn && hand.canSplit && hand.cards[0] == 11 -> SPLIT
firstTurn && hand.canSplit && hand.cards[0] == 9 && casinoCard !in listOf(7, 10, 11) -> SPLIT
firstTurn && hand.canSplit && hand.cards[0] == 8 -> SPLIT
firstTurn && hand.canSplit && hand.cards[0] == 7 && casinoCard <= 7 -> SPLIT
firstTurn && hand.canSplit && hand.cards[0] == 6 && casinoCard <= 6 -> SPLIT
firstTurn && hand.canSplit && hand.cards[0] == 4 && casinoCard in 5..6 -> SPLIT
firstTurn && hand.canSplit && hand.cards[0] in 2..3 && casinoCard <= 7 -> SPLIT
hand.unusedAces >= 1 && hand.points >= 19 -> STAND
hand.unusedAces >= 1 && hand.points == 18 && casinoCard < 9 -> STAND
hand.points > 16 -> STAND
hand.points > 12 && casinoCard < 4 -> STAND
hand.points > 11 && casinoCard in 4..6 -> STAND
hand.unusedAces >= 1 && casinoCard in 2..6 && hand.points >= 18 -> if (firstTurn) DOUBLE else STAND
hand.unusedAces >= 1 && casinoCard == 3 && hand.points >= 17 -> if (firstTurn) DOUBLE else HIT
hand.unusedAces >= 1 && casinoCard == 4 && hand.points >= 15 -> if (firstTurn) DOUBLE else HIT
hand.unusedAces >= 1 && casinoCard in 5..6 -> if (firstTurn) DOUBLE else HIT
hand.points == 11 -> if (firstTurn) DOUBLE else HIT
hand.points == 10 && casinoCard < 10 -> if (firstTurn) DOUBLE else HIT
hand.points == 9 && casinoCard in 3..6 -> if (firstTurn) DOUBLE else HIT
else -> HIT
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment