@xpressit/winning-poker-hand-rank
Version:
Determine winning poker hand rank
89 lines (85 loc) • 2.13 kB
text/typescript
import {
FLUSH,
FOUR_OF_A_KIND,
FULL_HOUSE,
HIGH_CARD,
PAIR,
ROYAL_FLUSH,
SIXPLUS_FLUSH,
SIXPLUS_FULL_HOUSE,
STRAIGHT,
STRAIGHT_FLUSH,
THREE_OF_A_KIND,
TWO_PAIR,
toFixedSixPlusRank,
toFixedTexasRank,
} from './cardRank';
import { Combination, GameType } from './types';
export const toCombination = (gameType: GameType, rank: number): Combination => {
if (gameType === 'short_deck') {
const fixedRank = toFixedSixPlusRank(rank);
if (fixedRank === ROYAL_FLUSH) {
return 'RoyalFlush';
}
if (fixedRank === STRAIGHT_FLUSH) {
return 'StraightFlush';
}
if (fixedRank === FOUR_OF_A_KIND) {
return 'FourOfAKind';
}
if (fixedRank === SIXPLUS_FLUSH) {
return 'Flush';
}
if (fixedRank === SIXPLUS_FULL_HOUSE) {
return 'FullHouse';
}
if (fixedRank === STRAIGHT) {
return 'Straight';
}
if (fixedRank === THREE_OF_A_KIND) {
return 'ThreeOfAKind';
}
if (fixedRank === TWO_PAIR) {
return 'TwoPair';
}
if (fixedRank === PAIR) {
return 'Pair';
}
if (fixedRank === HIGH_CARD) {
return 'HighCard';
}
return 'Invalid';
}
const fixedRank = toFixedTexasRank(rank);
if (fixedRank === ROYAL_FLUSH) {
return 'RoyalFlush';
}
if (fixedRank === STRAIGHT_FLUSH) {
return 'StraightFlush';
}
if (fixedRank === FOUR_OF_A_KIND) {
return 'FourOfAKind';
}
if (fixedRank === FULL_HOUSE) {
return 'FullHouse';
}
if (fixedRank === FLUSH) {
return 'Flush';
}
if (fixedRank === STRAIGHT) {
return 'Straight';
}
if (fixedRank === THREE_OF_A_KIND) {
return 'ThreeOfAKind';
}
if (fixedRank === TWO_PAIR) {
return 'TwoPair';
}
if (fixedRank === PAIR) {
return 'Pair';
}
if (fixedRank === HIGH_CARD) {
return 'HighCard';
}
return 'Invalid';
};