shufflecom-calculations 4.3.2 → 4.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/games/blitz.d.ts +2 -2
- package/lib/games/blitz.js +23 -15
- package/lib/games/blitz.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/games/blitz.spec.ts +50 -21
- package/src/games/blitz.ts +25 -15
package/lib/games/blitz.d.ts
CHANGED
|
@@ -4,10 +4,10 @@ export declare const BLITZ_MAX_PICKS = 36;
|
|
|
4
4
|
export interface BlitzResult {
|
|
5
5
|
maxRepeatedCount: number;
|
|
6
6
|
cards: number[];
|
|
7
|
+
maxUniqueCardsBeforeDuplicate: number;
|
|
7
8
|
}
|
|
8
9
|
export declare class Blitz {
|
|
9
|
-
static
|
|
10
|
-
private static drawCards;
|
|
10
|
+
static getMaxUniqueCardsSeedRounds(): number;
|
|
11
11
|
static getGameOutcome(hexStrings: string[], picks: number): BlitzResult;
|
|
12
12
|
static calculateWinChanceBN(picks: number): BigNumber;
|
|
13
13
|
static calculateMultiplierBN(picks: number, edgeBps: number): BigNumber;
|
package/lib/games/blitz.js
CHANGED
|
@@ -10,27 +10,35 @@ const edge_1 = require("../utils/edge");
|
|
|
10
10
|
exports.BLITZ_MIN_PICKS = 5;
|
|
11
11
|
exports.BLITZ_MAX_PICKS = 36;
|
|
12
12
|
class Blitz {
|
|
13
|
-
static
|
|
14
|
-
return Math.ceil(
|
|
13
|
+
static getMaxUniqueCardsSeedRounds() {
|
|
14
|
+
return Math.ceil((cardGames_1.CARDS_PER_DECK + 1) / 8);
|
|
15
15
|
}
|
|
16
|
-
static
|
|
17
|
-
const
|
|
18
|
-
if (
|
|
16
|
+
static getGameOutcome(hexStrings, picks) {
|
|
17
|
+
const allCards = cardGames_1.CardGames.getResults(hexStrings);
|
|
18
|
+
if (allCards.length < picks) {
|
|
19
19
|
throw new Error('Not enough cards drawn');
|
|
20
20
|
}
|
|
21
|
-
return cards.slice(0, picks);
|
|
22
|
-
}
|
|
23
|
-
static getGameOutcome(hexStrings, picks) {
|
|
24
|
-
const cards = this.drawCards(hexStrings, picks);
|
|
25
21
|
const cardCounts = {};
|
|
26
22
|
let maxRepeatedCount = 0;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
let maxUniqueCardsBeforeDuplicate = 0;
|
|
24
|
+
let duplicateFound = false;
|
|
25
|
+
for (let i = 0; i < allCards.length; i++) {
|
|
26
|
+
const card = allCards[i];
|
|
27
|
+
const isNewCard = !(card in cardCounts);
|
|
28
|
+
cardCounts[card] = (cardCounts[card] || 0) + 1;
|
|
29
|
+
if (i < picks && cardCounts[card] > maxRepeatedCount) {
|
|
30
|
+
maxRepeatedCount = cardCounts[card];
|
|
31
|
+
}
|
|
32
|
+
if (!duplicateFound) {
|
|
33
|
+
if (isNewCard) {
|
|
34
|
+
maxUniqueCardsBeforeDuplicate++;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
duplicateFound = true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
32
40
|
}
|
|
33
|
-
return { maxRepeatedCount, cards };
|
|
41
|
+
return { maxRepeatedCount, cards: allCards.slice(0, picks), maxUniqueCardsBeforeDuplicate };
|
|
34
42
|
}
|
|
35
43
|
static calculateWinChanceBN(picks) {
|
|
36
44
|
const deck = new bignumber_js_1.default(cardGames_1.CARDS_PER_DECK);
|
package/lib/games/blitz.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blitz.js","sourceRoot":"","sources":["../../src/games/blitz.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AACrC,2CAAwD;AACxD,wCAAwD;AAE3C,QAAA,eAAe,GAAG,CAAC,CAAC;AACpB,QAAA,eAAe,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"blitz.js","sourceRoot":"","sources":["../../src/games/blitz.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AACrC,2CAAwD;AACxD,wCAAwD;AAE3C,QAAA,eAAe,GAAG,CAAC,CAAC;AACpB,QAAA,eAAe,GAAG,EAAE,CAAC;AAQlC,MAAa,KAAK;IAChB,MAAM,CAAC,2BAA2B;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,0BAAc,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,UAAoB,EAAE,KAAa;QACvD,MAAM,QAAQ,GAAG,qBAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAElD,IAAI,QAAQ,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,6BAA6B,GAAG,CAAC,CAAC;QACtC,IAAI,cAAc,GAAG,KAAK,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC;YAExC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAE/C,IAAI,CAAC,GAAG,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC;gBACrD,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAI,SAAS,EAAE,CAAC;oBACd,6BAA6B,EAAE,CAAC;gBAClC,CAAC;qBAAM,CAAC;oBACN,cAAc,GAAG,IAAI,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,6BAA6B,EAAE,CAAC;IAC9F,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,KAAa;QACvC,MAAM,IAAI,GAAG,IAAI,sBAAS,CAAC,0BAAc,CAAC,CAAC;QAC3C,IAAI,MAAM,GAAG,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,KAAa,EAAE,OAAe;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,IAAA,8BAAuB,EAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,gBAAwB;QAC7C,OAAO,gBAAgB,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AA1DD,sBA0DC"}
|