From b2980e01b57a641b71ce28d8cc9d41606f78f65f Mon Sep 17 00:00:00 2001 From: Flummi Date: Tue, 11 Jul 2023 18:39:38 +0200 Subject: [PATCH] implement cactus kev's poker hand evaluator --- .gitignore | 3 ++- data/generate_table | Bin 0 -> 101132 bytes package-lock.json | 3 +++ package.json | 8 ++++++-- src/inc/handranker.mjs | 42 +++++++++++++++++++++++++++++++++++++++-- 5 files changed, 51 insertions(+), 5 deletions(-) create mode 100755 data/generate_table diff --git a/.gitignore b/.gitignore index 36420af..136ad40 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules -config.json \ No newline at end of file +config.json +data/HandRanks.dat diff --git a/data/generate_table b/data/generate_table new file mode 100755 index 0000000000000000000000000000000000000000..181922dd2ee90b76c93aed3436ec0485fbb0cda8 GIT binary patch literal 101132 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 DW6-dk literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index e168b6d..14b6c0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,9 @@ "": { "name": "schmirc", "version": "1.0.0", + "cpu": [ + "x64" + ], "license": "ISC", "dependencies": { "@xpressit/winning-poker-hand-rank": "^0.1.6", diff --git a/package.json b/package.json index 0cec7ca..0c6dd72 100644 --- a/package.json +++ b/package.json @@ -2,9 +2,13 @@ "name": "schmirc", "version": "1.0.0", "description": "", - "main": "index.js", + "main": "index.mjs", + "cpu": [ + "x64" + ], "scripts": { - "start": "node ./src/index.mjs" + "start": "node ./src/index.mjs", + "build": "cd ./data && ./generate_table" }, "author": "Flummi", "license": "ISC", diff --git a/src/inc/handranker.mjs b/src/inc/handranker.mjs index 38c2710..3c913a4 100644 --- a/src/inc/handranker.mjs +++ b/src/inc/handranker.mjs @@ -1,6 +1,44 @@ +import fs from 'node:fs'; + export default new class handranker { + #ranks; + constructor() { - return this; + this.#ranks = fs.readFileSync('./data/HandRanks.dat'); + + this.handtypes = [ + "InvalidHand", "HighCard", "Pair", + "TwoPairs", "ThreeOfAKind", "Straight", + "Flush", "FullHouse", "FourOfAKind", + "StraightFlush" + ]; + + this.cards = ['']; + for(const cv of [..."23456789TJQKA"]) + for(const cs of [..."CDHS"]) + this.cards.push(cv + cs); + }; + evalHand(cards) { + if(!this.#ranks) + throw new Error("HandRanks.dat not loaded, run 'npm run build' first!"); + + if(![7,6,5,3].includes(cards.length)) + throw new Error("Hand must be 3, 5, 6, or 7 cards"); + + cards = cards.map(c => this.cards.indexOf(c)); + + let p = 53; + for(let i = 0; i < cards.length; i++) + p = this.#ranks.readUInt32LE((p + cards[i]) * 4); + + if(cards.length == 5 || cards.length == 6) + p = this.#ranks.readUInt32LE(p * 4); + + return { + handType: p >> 12, + handRank: p & 0x00000fff, + value: p, + handName: this.handtypes[p >> 12] + }; }; - };