shufflecom-calculations 4.3.1 → 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.
@@ -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 getGameSeedRounds(picks: number): number;
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;
@@ -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 getGameSeedRounds(picks) {
14
- return Math.ceil(picks / 8);
13
+ static getMaxUniqueCardsSeedRounds() {
14
+ return Math.ceil((cardGames_1.CARDS_PER_DECK + 1) / 8);
15
15
  }
16
- static drawCards(hexStrings, picks) {
17
- const cards = cardGames_1.CardGames.getResults(hexStrings);
18
- if (cards.length < picks) {
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
- for (const card of cards) {
28
- const count = (cardCounts[card] || 0) + 1;
29
- cardCounts[card] = count;
30
- if (count > maxRepeatedCount)
31
- maxRepeatedCount = count;
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);
@@ -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;AAOlC,MAAa,KAAK;IAChB,MAAM,CAAC,iBAAiB,CAAC,KAAa;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,UAAoB,EAAE,KAAa;QAC1D,MAAM,KAAK,GAAG,qBAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,UAAoB,EAAE,KAAa;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC1C,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAEzB,IAAI,KAAK,GAAG,gBAAgB;gBAAE,gBAAgB,GAAG,KAAK,CAAC;QACzD,CAAC;QAED,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;IACrC,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;AAjDD,sBAiDC"}
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"}
@@ -11,7 +11,7 @@ type LotteryConfig = {
11
11
  };
12
12
  export declare const LOTTERY_VERSION_RECORD: Record<LotteryVersion, LotteryConfig>;
13
13
  export declare class Lottery {
14
- static readonly version = LotteryVersion.V1;
14
+ static readonly version = LotteryVersion.V2;
15
15
  static getConfig(version: LotteryVersion): LotteryConfig;
16
16
  static generateBalls(version: LotteryVersion, hexStr: string): number[];
17
17
  static generateRandomBalls(version: LotteryVersion): number[];
@@ -40,5 +40,5 @@ class Lottery {
40
40
  }
41
41
  }
42
42
  exports.Lottery = Lottery;
43
- Lottery.version = LotteryVersion.V1;
43
+ Lottery.version = LotteryVersion.V2;
44
44
  //# sourceMappingURL=lottery.js.map