lottery-facility
TypeScript icon, indicating that this package has built-in type declarations

0.0.1-alpha.9 • Public • Published

lottery-facility

npm version Npm package monthly downloads GitHub

Some APIs and CLI tools for designing lottery cracking systems.

Overview

Features:

  • Random numbers generator
  • Random selections of numbers
  • Draws statistics (TODO)
  • Draws prediction heuristics (TODO)

CLI utilities:

  • flash
  • combination
  • translate
  • difference
  • filter
  • euromillions_draws (TODO)
  • kenoFR_draws (TODO)

Install

Install with npm:

npm install lottery-facility
npm install --save-dev @types/lottery-facility

Quick start

CommonJS

Import in your NodeJS project with CommonJS:

const lotteryFacility = require('lottery-facility');

const box = new lotteryFacility.DrawBox(70);
const balls = box.draw(20);
console.log(balls);

ES6 or TypeScript

Import in your NodeJS project with ES6 or TypeScript:

create a file test.ts (for Typescript) or test.js (for ES6)

import { DrawBox } from 'lottery-facility';

const box = new DrawBox(70);
const balls = box.draw(20);
console.log(balls);

and compile with these commands

npx tsc test.ts
npx babel --presets=@babel/env test.js --out-file script-compiled.js

Browsers

Import in your browser project from a CDN:

<!DOCTYPE html>
<html>
<head>
  <title>Lottery-facility from CDN</title>
</head>
<body>

  <!-- Load lottery-facility library -->
  <script src="https://unpkg.com/lottery-facility@0.0.1-alpha.9/dist/lotteryfacility-webbundle.min.umd.js"></script>

  <script>
  const box = new LotteryFacility.DrawBox(70);
  const balls = box.draw(20);
  document.write(balls);
  </script>

</body>
</html>

CLI utilities

All the following documentation is available in the tools by running --help on command line.

1. flash

Parameters

--verbose, -v  Verbose mode (default true).
--outfile      Output filename (optional).
--total, -t    Total number of lottery balls.
--size, -s     Size of generated combinations.
--sort         Display ordered combinations (optional).
--nb           Number of generated combinations.
--nbSwap       Number of shuffle operations. Default value 200.

Description

This script generates a random selection of lottery balls, taken from 1 to total balls. The optional parameter sort sorts combinations items in ascending order. You can put total and size pairs multiple times for random selection into multiple draw boxes.

Exemple

Generate 8 random games for Euromillions lottery

$ flash --total 50 --size 5 --total 12 --size 2 --nb 8 --sort
07 10 12 17 28 | 04 08
01 10 15 48 50 | 02 10
03 14 16 30 40 | 07 11
01 13 19 25 40 | 01 12
06 11 39 40 48 | 02 03
05 09 26 32 48 | 01 03
07 21 31 48 50 | 10 11
11 20 23 33 40 | 09 12

2. combination

Parameters

--verbose, -v   Verbose mode (default true).
--outfile       Output filename (optional).
--total, -t     Total number of arranged packets of items.
--size, -s      Number of assembled packets of items.
--file, -f      A file containing one item of combination per line.
--numbers, -n   Items of combinations separated by '|'.
--step          Size of a packet of items. Default value 1.

Description

This script generates combinations of packets of items taken in file file or list numbers, of size size packets, implementing choice of size packets among total packets. Only the first step*total items of file or numbers are used to build combinations.

Exemple

Generation of all combinations of size 3 in a list of 5 numbers (choice of 3 among 5)

$ combination --size 3 --total 5 --numbers "01|02|03|04|05|06|07|08|09|10"
01 02 03
01 02 04
01 02 05
01 03 04
01 03 05
01 04 05
02 03 04
02 03 05
02 04 05
03 04 05

3. translate

Overview
In order to win lottery games, you both need a tactical game (file of several combinations) and a smart selection of numbers based on statistics study. First, you have to find good numbers with high probability to draw. The more you have winning numbers in your selection the better it is for you. Then, you also have to put the good numbers all together on a same combination. If there are too many loosing numbers in your selection, they can polluate your games. To be sure to have winning numbers on the same combination you have to make a huge amount of combinations. But you cannot afford to make all possible combinations for economical reasons. So you need to use a tactical set of combinations that can help you win if you have sufficient amount of winning numbers. In the end, you need to apply your smart selection of numbers onto your tactical game. And this is the usage of tanslate tool.

Parameters

--file, -f    A file containing one combination per line to be translated.
--originnum   Items of combinations separated by '|' or ' '.
--originfile  File containing one item per line that are used in combinations of <file> file.
--targetnum   Items of combinations separated by '|' or ' ', for the translation of combinations.
--targetfile  File containing one item per line used for the translation of <file> file.

Description

This script takes an input file file containing one combination per line. These input combinations are written with the origin alphabet and to be translated into target alphabet. Items of origin alphabet are translated to target alphabet relatively to their corresponding order of declaration.
The origin alphabet can be declared either with originnum or originfile parameters.
The target alphabet can be declared either with targetnum or targetfile parameters.

Exemple

We start with a tactical GAME.txt file written with the origin alphabet 01 02 03 04 05 06 07 08 09 10 11 12

$ cat GAME.txt
01 02 03 04 05 06
07 01 02 08 05 09
07 04 08 10 06 09
01 02 04 08 10 11
07 01 03 10 06 11
03 08 10 05 06 11
07 03 04 05 09 11
07 01 04 08 05 12
07 02 03 08 06 12
02 03 04 10 09 12
01 10 05 06 09 12
07 02 10 05 11 12
01 03 08 09 11 12
02 04 06 09 11 12

After many hours of statistics analysis, we select 12 high probability winning numbers. These numbers are 25 28 31 34 37 52 53 59 61 67 68 70. We need to apply this selection onto our tactical GAME.txt file. We use the translate tool to do that job with the following command

$ translate --file GAME.txt --originnum "01 02 03 04 05 06 07 08 09 10 11 12" \
--targetnum "25 28 31 34 37 52 53 59 61 67 68 70"
25 28 31 34 37 52
53 25 28 59 37 61
53 34 59 67 52 61
25 28 34 59 67 68
53 25 31 67 52 68
31 59 67 37 52 68
53 31 34 37 61 68
53 25 34 59 37 70
53 28 31 59 52 70
28 31 34 67 61 70
25 67 37 52 61 70
53 28 67 37 68 70
25 31 59 61 68 70
28 34 52 61 68 70

4. difference

Parameters

--file, -f    A file containing one combination per line to calculate the difference to.
--globalnum   All items that can be used in combinations, separated by '|' or ' '.
--globalfile  File containing one item of combination per line, items used in combinations of <file> file,
              but possibly others items.

Description

This script takes an input file file containing one combination per line, combinations written with items of the global alphabet, and returns the difference between the global alphabet and each combination.
The global alphabet can be declared either with globalnum or globalfile parameters.

Exemple

We start with a GAME.txt file written with the global alphabet 01 02 03 04 05 06 07 08 09 10

$ cat GAME.txt
04 05 06 07 08 09 10
03 05 06 07 08 09 10
03 04 06 07 08 09 10
01 02 06 07 08 09 10
01 02 03 04 05 09 10
01 02 03 04 05 08 10
01 02 03 04 05 08 09
01 02 03 04 05 06 07

Computation of the difference of file GAME.txt relatively to the global alphabet 01 02 03 04 05 06 07 08 09 10

$ difference --file GAME.txt --globalnum "01 02 03 04 05 06 07 08 09 10"
01 02 03
01 02 04
01 02 05
03 04 05
06 07 08
06 07 09
06 07 10
08 09 10

5. filter

6. cartesian_product

7. paste

8. cut

9. euromillions_draws

10. kenoFR_draws

Publish a version

Build and test the project with these commands

npm install
npm run build
npm run test

You can see what files will be embedded in the new release with the command below. Files and directories listed in .gitignore and .npmignore won't be in the package. Files and directories listed in the "files:" section of package.json file will be included in the final package.

npm pack

Update the package version with one of the following commands. If inside a Git directory, the package.json file's version is changed and committed. And a new Git tag related to the new version is created.

npm version prerelease --preid=alpha
npm version prerelease --preid=beta
npm version prerelease --preid=rc
npm version patch
npm version minor
npm version major

Push the new Git tag to remote origin

git push --tags

Go to the root of the project, and publish publicly the new package version to the NPM registry. Once published a version can be deprecated, but it cannot be deleted nor re-used.

npm publish --access public

Depracation of NPM package versions

npm deprecate @claudelalyre/lottery-facility@0.0.1-alpha.0 "obsolete"
npm deprecate @claudelalyre/lottery-facility@0.0.1-alpha.1 "obsolete"

License

The project is released under the MIT license.

Contact

The project's website is located at https://github.com/lalyre/lottery-facility.
Author: Claude Lalyre (claude.lalyre@gmail.com)

Contributors

Package Sidebar

Install

npm i lottery-facility

Weekly Downloads

1

Version

0.0.1-alpha.9

License

MIT

Unpacked Size

206 kB

Total Files

23

Last publish

Collaborators

  • claudelalyre