woo new tidy version
This commit is contained in:
parent
c816f8c4c8
commit
5f73c46b74
53
.eslintrc.json
Normal file
53
.eslintrc.json
Normal file
@ -0,0 +1,53 @@
|
||||
{
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 6,
|
||||
"sourceType": "module",
|
||||
"ecmaFeatures": {
|
||||
"jsx": false
|
||||
}
|
||||
},
|
||||
"env": {
|
||||
"browser": true,
|
||||
"node": true,
|
||||
"es6": true
|
||||
},
|
||||
"rules": {
|
||||
"arrow-spacing": "error",
|
||||
"block-scoped-var": "error",
|
||||
"block-spacing": "error",
|
||||
"brace-style": ["error", "stroustrup", {}],
|
||||
"camelcase": "error",
|
||||
"comma-dangle": ["error", "never"],
|
||||
"comma-spacing": ["error", { "before": false, "after": true }],
|
||||
"comma-style": [1, "last"],
|
||||
"consistent-this": [1, "_this"],
|
||||
"curly": [1, "multi"],
|
||||
"eol-last": 1,
|
||||
"eqeqeq": 1,
|
||||
"func-names": 1,
|
||||
"indent": ["error", 2, { "SwitchCase": 1 }],
|
||||
"lines-around-comment": ["error", { "beforeBlockComment": true, "allowArrayStart": true }],
|
||||
"max-len": [1, 120, 2], // 2 spaces per tab, max 80 chars per line
|
||||
"new-cap": 1,
|
||||
"newline-before-return": "error",
|
||||
"no-array-constructor": 1,
|
||||
"no-inner-declarations": [1, "both"],
|
||||
"no-mixed-spaces-and-tabs": 1,
|
||||
"no-multi-spaces": 2,
|
||||
"no-new-object": 1,
|
||||
"no-shadow-restricted-names": 1,
|
||||
"object-curly-spacing": ["error", "always"],
|
||||
"padded-blocks": ["error", { "blocks": "never", "switches": "always" }],
|
||||
"prefer-const": "error",
|
||||
"prefer-template": "error",
|
||||
"one-var": 0,
|
||||
"quote-props": ["error", "always"],
|
||||
"quotes": [1, "single"],
|
||||
"radix": 1,
|
||||
"semi": [1, "always"],
|
||||
"space-before-blocks": [1, "always"],
|
||||
"space-infix-ops": 1,
|
||||
"vars-on-top": 1
|
||||
}
|
||||
|
||||
}
|
33
app.js
Normal file
33
app.js
Normal file
@ -0,0 +1,33 @@
|
||||
const loader = require('./libs/loader');
|
||||
const lot = require('./libs/lot');
|
||||
const lotv2 = require('./libs/lotV2');
|
||||
const pusher = require('./libs/pusher');
|
||||
|
||||
|
||||
|
||||
function run(data) {
|
||||
const v1 = lot.calculate(data);
|
||||
const v2 = lotv2.calculate(data);
|
||||
|
||||
const msg =
|
||||
|
||||
`V2: ${v2} stars: ${v1.mainstars}
|
||||
V1: ${v1.mainline} stars: ${v1.mainstars}
|
||||
Other: ${v1.otherLine} stars: ${v1.otherStars}
|
||||
`;
|
||||
|
||||
pusher.push(msg);
|
||||
console.log(msg);
|
||||
loader.save(data);
|
||||
}
|
||||
|
||||
function go() {
|
||||
loader.load(run);
|
||||
}
|
||||
|
||||
|
||||
cron.schedule('10 13 * * 2,5', function() {
|
||||
go();
|
||||
// console.log('tick');
|
||||
return -1;
|
||||
});
|
File diff suppressed because one or more lines are too long
84
libs/loader.js
Normal file
84
libs/loader.js
Normal file
@ -0,0 +1,84 @@
|
||||
const jsonfile = require('jsonfile');
|
||||
const https = require('https');
|
||||
const Sugar = require('sugar-date');
|
||||
|
||||
const file = 'data/data.json';
|
||||
|
||||
function resultsQuery(callback) {
|
||||
const options = {
|
||||
'host': 'euromillions.p.mashape.com',
|
||||
'path': '/ResultsService/FindLast',
|
||||
|
||||
'headers': {
|
||||
'accept': 'text/plain',
|
||||
'X-Mashape-Key': '5A0H980jK6mshSFL24ZmfiRrNHV2p1d1fhQjsngtx8QWuO9oe4'
|
||||
|
||||
},
|
||||
'method': 'GET'
|
||||
};
|
||||
|
||||
|
||||
https.request(options).on('response', function (response) {
|
||||
let data = '';
|
||||
response.on('data', function (chunk) {
|
||||
data += chunk;
|
||||
});
|
||||
response.on('end', function () {
|
||||
//console.log(data);
|
||||
callback(JSON.parse(data));
|
||||
});
|
||||
}).end();
|
||||
}
|
||||
|
||||
function processDataV2(data) {
|
||||
const newArray = [];
|
||||
const date = /(\/Date\()([0-9]+)([\s\S]+)/.exec(data.Date);
|
||||
|
||||
// console.log(data);
|
||||
|
||||
//date = /(\/Date\()([0-9]+)([\s\S]+)/.exec(data.Date);
|
||||
const newdate = Sugar.Date.format(new Date(parseInt(date[2])), '%Y-%m-%d');
|
||||
|
||||
newArray.push(newdate);
|
||||
|
||||
newArray.push(data.Num1);
|
||||
newArray.push(data.Num2);
|
||||
newArray.push(data.Num3);
|
||||
newArray.push(data.Num4);
|
||||
newArray.push(data.Num5);
|
||||
|
||||
newArray.push(data.Star1);
|
||||
newArray.push(data.Star2);
|
||||
|
||||
return newArray;
|
||||
}
|
||||
|
||||
|
||||
function load(cb) {
|
||||
jsonfile.readFile(file, (err, obj) => {
|
||||
if (err) console.error(err);
|
||||
|
||||
const lotData = obj;
|
||||
|
||||
resultsQuery( (a) => {
|
||||
const latest = processDataV2(a);
|
||||
|
||||
const dateExists = lotData.filter((item) => {
|
||||
if (item[0] === latest[0]) return item;
|
||||
});
|
||||
|
||||
if (dateExists.length === 0)
|
||||
lotData.unshift(latest);
|
||||
|
||||
// return the data
|
||||
cb(lotData);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function save(data) {
|
||||
jsonfile.writeFileSync(file, data);
|
||||
}
|
||||
|
||||
module.exports.load = load;
|
||||
module.exports.save = save;
|
294
libs/lot.js
Normal file
294
libs/lot.js
Normal file
@ -0,0 +1,294 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const m = [],
|
||||
prev = [],
|
||||
mo = [],
|
||||
star = [],
|
||||
trip = [],
|
||||
results = [];
|
||||
const line = [];
|
||||
|
||||
let re = [];
|
||||
const resultsObj = {};
|
||||
|
||||
|
||||
|
||||
|
||||
function sortNumber(a, b) {
|
||||
return a - b;
|
||||
}
|
||||
|
||||
function dynamicSort(property) {
|
||||
let sortOrder = 1;
|
||||
if (property[0] === '-') {
|
||||
sortOrder = -1;
|
||||
property = property.substr(1);
|
||||
}
|
||||
|
||||
return function (a, b) {
|
||||
const result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
|
||||
|
||||
return result * sortOrder;
|
||||
};
|
||||
}
|
||||
|
||||
function buildArray() {
|
||||
for (let x = 0; x < 51; x++) {
|
||||
const l = [];
|
||||
for (let y = 0; y < 51; y++)
|
||||
l.push(0);
|
||||
|
||||
m[x] = l;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function othercalc() {
|
||||
let i = 0;
|
||||
// var p = 1 / ((-1)*re.length);
|
||||
const p = 1.0 / (re.length);
|
||||
// console.log('P', p);
|
||||
|
||||
for (i = 0; i < re.length - 1; i++)
|
||||
// console.log((p * i));
|
||||
// console.log(re[i]);
|
||||
for (let s = 1; s < 6; s++) {
|
||||
const cv = re[i][s];
|
||||
// console.log("row: " + cv);
|
||||
for (let n = 1; n < 6; n++)
|
||||
if (n !== s) {
|
||||
workVal = re[i][n];
|
||||
// console.log(workVal);
|
||||
// m[cv-1][workVal-1]++;
|
||||
let flag = false;
|
||||
for (var t = 0; t < mo.length; t++)
|
||||
if (mo[t].a === cv && mo[t].b === workVal) {
|
||||
if (typeof mo[t].c === 'undefined' || mo[t].c === null)
|
||||
mo[t].c = 0;
|
||||
|
||||
mo[t].c++;
|
||||
flag = true;
|
||||
// mo[t].v++;
|
||||
/*
|
||||
if (i < (re.length/2))
|
||||
mo[t].v = mo[t].v - (p * i)
|
||||
else
|
||||
*/
|
||||
|
||||
// original weighting
|
||||
//mo[t].v = mo[t].v + (p * i);
|
||||
|
||||
//reverse weighting..
|
||||
mo[t].v = mo[t].v + (1 - (p * i));
|
||||
// console.log(mo[t], 1 - (p * i));
|
||||
//;
|
||||
//mo[t].v = mo[t].v + 1;
|
||||
// ;
|
||||
}
|
||||
|
||||
if (!flag)
|
||||
mo.push({
|
||||
'a': cv,
|
||||
'b': workVal,
|
||||
'v': 1
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
console.log('******************************************');
|
||||
mo.sort(dynamicSort('v'));
|
||||
|
||||
//for (var t = (mo.length - 20); t < mo.length; t++) {
|
||||
var t = mo.length - 1;
|
||||
while (line.length < 5) {
|
||||
if (line.indexOf(mo[t].a) == -1 && line.length < 5)
|
||||
line.push(mo[t].a);
|
||||
|
||||
if (line.indexOf(mo[t].b) == -1 && line.length < 5)
|
||||
line.push(mo[t].b);
|
||||
|
||||
t = t - 1;
|
||||
}
|
||||
|
||||
// console.log(line);
|
||||
|
||||
console.log(line.sort());
|
||||
|
||||
resultsObj.mainline = line.sort();
|
||||
resultsObj.otherLine = [];
|
||||
resultsObj.otherLine.push(mo[mo.length - 1].a);
|
||||
resultsObj.otherLine.push(mo[mo.length - 1].b);
|
||||
|
||||
for (var t = mo.length - 1; t > (mo.length - 3); t--)
|
||||
// if (mo[t].v >= 3) {
|
||||
if (mo[t].v > 1)
|
||||
console.log(`${mo[t].a }, ${ mo[t].b }, ${ mo[t].v}`);
|
||||
|
||||
|
||||
// buildTable();
|
||||
}
|
||||
|
||||
function tripCalc() {
|
||||
const blist = [[0, 1, 2], [0, 1, 3], [0, 1, 4], [0, 2, 3], [0, 2, 4], [0, 3, 4], [1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]];
|
||||
const p = 1.0 / (re.length);
|
||||
let a, b, c, cur;
|
||||
//var trip = [];
|
||||
//console.log
|
||||
for (i = 0; i < re.length - 1; i++)
|
||||
|
||||
for (let t = 0; t < blist.length; t++) {
|
||||
cur = blist[t];
|
||||
|
||||
a = re[i][cur[0] + 1];
|
||||
b = re[i][cur[1] + 1];
|
||||
c = re[i][cur[2] + 1];
|
||||
|
||||
|
||||
// console.log(a + ", " + b + "," + c);
|
||||
|
||||
|
||||
let found = false;
|
||||
for (y = 0; y < trip.length; y++) {
|
||||
const nums = trip[y].nums;
|
||||
|
||||
if (!found)
|
||||
if ((nums.indexOf(a) !== -1) && (nums.indexOf(b) !== -1) && (nums.indexOf(c) !== -1)) {
|
||||
/* console.log("nums:" + nums);
|
||||
console.log("want: " + a + ", " + b + "," + c);
|
||||
console.log("A:" + nums.indexOf(a));
|
||||
console.log("B:" + nums.indexOf(b));
|
||||
console.log("C:" + nums.indexOf(c));
|
||||
*/
|
||||
|
||||
trip[y].cnt = trip[y].cnt + (p * i);
|
||||
// trip[y].cnt = trip[y].cnt + 1;
|
||||
|
||||
// console.log(">>>" + trip[y].cnt);
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found)
|
||||
|
||||
//trip.push({nums:[a,b,c],cnt:(p * i)});
|
||||
trip.push({
|
||||
'nums': [a, b, c],
|
||||
'cnt': 1
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
let max = 0;
|
||||
for (y = 0; y < trip.length; y++)
|
||||
if (trip[y].cnt > max) max = trip[y].cnt;
|
||||
|
||||
//console.log(`Max: ${ max}`);
|
||||
for (y = 0; y < trip.length; y++)
|
||||
if (trip[y].cnt === max) {
|
||||
// console.log(`${trip[y].cnt }, ${ trip[y].nums}`);
|
||||
|
||||
resultsObj.otherLine = resultsObj.otherLine.concat(trip[y].nums).sort();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// console.log(JSON.stringify(trip));
|
||||
}
|
||||
|
||||
function starcalc() {
|
||||
let i = 0;
|
||||
const p = 1 / re.length;
|
||||
for (i = 0; i < re.length - 1; i++)
|
||||
// console.log(re[i]);
|
||||
for (let s = 6; s < 8; s++) {
|
||||
const cv = re[i][s];
|
||||
// console.log("row: " + cv);
|
||||
for (let n = 6; n < 8; n++)
|
||||
if (n !== s) {
|
||||
workVal = re[i][n];
|
||||
// console.log(workVal);
|
||||
// m[cv-1][workVal-1]++;
|
||||
let flag = false;
|
||||
for (var t = 0; t < mo.length; t++)
|
||||
if (mo[t].a === cv && mo[t].b === workVal) {
|
||||
flag = true;
|
||||
mo[t].v++;
|
||||
|
||||
mo[t].v = mo[t].v + (p * i);
|
||||
}
|
||||
|
||||
if (!flag)
|
||||
mo.push({
|
||||
'a': cv,
|
||||
'b': workVal,
|
||||
'v': 1
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// console.log('******************************************');
|
||||
mo.sort(dynamicSort('v'));
|
||||
|
||||
var t = mo.length - 1;
|
||||
|
||||
const starOutput = [];
|
||||
starOutput.push(mo[t].a);
|
||||
starOutput.push(mo[t].b);
|
||||
|
||||
|
||||
resultsObj.mainstars = [];
|
||||
resultsObj.mainstars.push(starOutput.sort()[0]);
|
||||
resultsObj.mainstars.push(starOutput.sort()[1]);
|
||||
|
||||
resultsObj.otherStars = [];
|
||||
resultsObj.otherStars.push(mo[mo.length - 3].a);
|
||||
resultsObj.otherStars.push(mo[mo.length - 3].b);
|
||||
|
||||
|
||||
|
||||
//console.log('Stars: ' + mo[t].a + ', ' + mo[t].b);
|
||||
|
||||
/* console.log(`Stars: ${ starOutput.sort()[0] }, ${ starOutput.sort()[1]}`);
|
||||
for (var t = mo.length - 6; t < mo.length; t++)
|
||||
if (mo[t].v >= 3)
|
||||
console.log(`${mo[t].a }, ${ mo[t].b }, ${ mo[t].v}`);
|
||||
*/
|
||||
|
||||
|
||||
// buildTable();
|
||||
}
|
||||
|
||||
function performCalcs() {
|
||||
buildArray();
|
||||
//buildTable();
|
||||
othercalc();
|
||||
console.log('---------------------------------------');
|
||||
starcalc();
|
||||
|
||||
tripCalc();
|
||||
}
|
||||
|
||||
function prepareResults() {
|
||||
resultsObj.mainline = resultsObj.mainline.sort(sortNumber);
|
||||
resultsObj.otherLine = resultsObj.otherLine.sort(sortNumber);
|
||||
|
||||
resultsObj.mainstars = resultsObj.mainstars.sort(sortNumber);
|
||||
resultsObj.otherStars = resultsObj.otherStars.sort(sortNumber);
|
||||
|
||||
return resultsObj;
|
||||
}
|
||||
|
||||
function calculate(data) {
|
||||
re = data;
|
||||
performCalcs();
|
||||
|
||||
prepareResults();
|
||||
|
||||
console.log(resultsObj);
|
||||
|
||||
return resultsObj;
|
||||
}
|
||||
|
||||
module.exports.calculate = calculate;
|
114
libs/lotV2.js
Normal file
114
libs/lotV2.js
Normal file
@ -0,0 +1,114 @@
|
||||
|
||||
const m = [];
|
||||
|
||||
const newNumberContainer = {};
|
||||
|
||||
let numberStore = [];
|
||||
|
||||
function buildArray() {
|
||||
for (let x = 0; x < 51; x++) {
|
||||
const l = [];
|
||||
for (let y = 0; y < 51; y++)
|
||||
l.push(0);
|
||||
|
||||
m[x] = l;
|
||||
}
|
||||
}
|
||||
|
||||
function othercalcV2() {
|
||||
// Var p = 1 / ((-1)*numberStore.length);
|
||||
const p = 1.0 / (numberStore.length);
|
||||
|
||||
for (let i = 0; i < numberStore.length - 1; i++) {
|
||||
const thisRow = [];
|
||||
|
||||
for (let s = 1; s < 6; s++) {
|
||||
const cv = numberStore[i][s];
|
||||
|
||||
for (let n = 1; n < 6; n++)
|
||||
if (n !== s) {
|
||||
const workVal = numberStore[i][n];
|
||||
// Console.log(workVal);
|
||||
// m[cv-1][workVal-1]++;
|
||||
|
||||
// Console.log('mo', mo);
|
||||
|
||||
const tempArray = [cv, workVal].sort((a, b) => {
|
||||
if (a < b)
|
||||
return -1;
|
||||
|
||||
return a > b ? 1 : 0;
|
||||
});
|
||||
const id = tempArray.join('-');
|
||||
|
||||
if (thisRow.indexOf(id) === -1) {
|
||||
const record = newNumberContainer[id] || { 'c': 0, 'v': 0, 'id': id };
|
||||
record.c++;
|
||||
record.v += (p * i);
|
||||
newNumberContainer[id] = record;
|
||||
|
||||
thisRow.push(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let flatArray = Object.keys(newNumberContainer).map((key) => newNumberContainer[key]);
|
||||
|
||||
flatArray = flatArray.sort((a, b) => {
|
||||
if (a.c < b.c)
|
||||
return 1;
|
||||
|
||||
return a.c > b.c ? -1 : 0;
|
||||
});
|
||||
|
||||
let line = [];
|
||||
let lineI = 0;
|
||||
|
||||
while (line.length < 5) {
|
||||
const pair = flatArray[lineI];
|
||||
pairS = pair.id.split('-');
|
||||
|
||||
if (line.indexOf(pairS[0]) === -1 && line.length < 5)
|
||||
line.push(pairS[0]);
|
||||
|
||||
if (line.indexOf(pairS[1]) === -1 && line.length < 5)
|
||||
line.push(pairS[1]);
|
||||
|
||||
// console.log(line);
|
||||
lineI++;
|
||||
}
|
||||
|
||||
line = line.sort((a, b) => {
|
||||
if (~~a < ~~b)
|
||||
return -1;
|
||||
|
||||
return ~~a > ~~b ? 1 : 0;
|
||||
});
|
||||
|
||||
//console.log(line);
|
||||
|
||||
return line;
|
||||
}
|
||||
|
||||
|
||||
function performCalcs() {
|
||||
buildArray();
|
||||
//BuildTable();
|
||||
const line = othercalcV2();
|
||||
console.log('---------------------------------------');
|
||||
console.log(`line: ${line}`);
|
||||
// Starcalc();
|
||||
|
||||
// tripCalc();
|
||||
return line;
|
||||
}
|
||||
|
||||
function calculate(data) {
|
||||
numberStore = data;
|
||||
|
||||
return performCalcs();
|
||||
}
|
||||
|
||||
module.exports.calculate = calculate;
|
||||
|
26
libs/pusher.js
Normal file
26
libs/pusher.js
Normal file
@ -0,0 +1,26 @@
|
||||
/**
|
||||
*
|
||||
* User: Martin Donnelly
|
||||
* Date: 2016-04-08
|
||||
* Time: 16:35
|
||||
*
|
||||
*/
|
||||
var Pushover = require('node-pushover'), dateFormat = require('dateformat');
|
||||
var push = new Pushover({
|
||||
'token': 'aqnos2j4v4pjpry3hvnxq9646eup23',
|
||||
'user': 'BE2vgFxdHJw91lVGMRYvZDDmVa5cCM'
|
||||
});
|
||||
|
||||
|
||||
var logger = require('log4js').getLogger();
|
||||
|
||||
const prefix = process.env.NODE_ENV === 'production' ? 'Production' : 'Dev';
|
||||
const title = `mdLot ${ prefix } Alert`;
|
||||
module.exports = {
|
||||
|
||||
'push' : function(contents) {
|
||||
var now = new Date();
|
||||
var msg = `Updated at ${ dateFormat(now, 'dddd, mmmm dS, yyyy, HH:MM:ss') }\n\n${ contents }`;
|
||||
push.send(title, msg);
|
||||
}
|
||||
};
|
781
lot.js
781
lot.js
@ -1,44 +1,42 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
var jsonfile = require('jsonfile'),
|
||||
https = require('https'),
|
||||
UltraSES = require('ultrases'),cron = require('node-cron');
|
||||
const jsonfile = require('jsonfile'),
|
||||
https = require('https'),
|
||||
UltraSES = require('ultrases'), cron = require('node-cron');
|
||||
|
||||
var Sugar = require('sugar-date');
|
||||
const Sugar = require('sugar-date');
|
||||
|
||||
var file = 'data/data.json';
|
||||
var m = [],
|
||||
prev = [],
|
||||
mo = [],
|
||||
star = [],
|
||||
trip = [],
|
||||
results = [],
|
||||
line = [];
|
||||
const file = 'data/data.json';
|
||||
const m = [],
|
||||
prev = [],
|
||||
mo = [],
|
||||
star = [],
|
||||
trip = [],
|
||||
results = [];
|
||||
let line = [];
|
||||
|
||||
var re = [];
|
||||
var resultsObj = {};
|
||||
let re = [];
|
||||
let resultsObj = {};
|
||||
|
||||
|
||||
|
||||
var mailer = new UltraSES({
|
||||
aws: {
|
||||
accessKeyId: 'AKIAJWJS75F7WNCGK64A',
|
||||
secretAccessKey: '8irYxThCp4xxyrbr00HzWcODe2qdNrR7X7S5BKup',
|
||||
"region": "eu-west-1"
|
||||
},
|
||||
defaults: {
|
||||
from: 'Martin Donnelly <martind2000@gmail.com>'
|
||||
}
|
||||
const mailer = new UltraSES({
|
||||
'aws': {
|
||||
'accessKeyId': 'AKIAJWJS75F7WNCGK64A',
|
||||
'secretAccessKey': '8irYxThCp4xxyrbr00HzWcODe2qdNrR7X7S5BKup',
|
||||
'region': 'eu-west-1'
|
||||
},
|
||||
'defaults': {
|
||||
'from': 'Martin Donnelly <martind2000@gmail.com>'
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
function $(elm) {
|
||||
return document.getElementById(elm);
|
||||
return document.getElementById(elm);
|
||||
}
|
||||
|
||||
function resultsQuery(callback) {
|
||||
/* var options = {
|
||||
/* var options = {
|
||||
host: 'nunofcguerreiro.com',
|
||||
path: '/api-euromillions-json',
|
||||
port: 443,
|
||||
@ -51,424 +49,409 @@ function resultsQuery(callback) {
|
||||
method: 'GET'
|
||||
};*/
|
||||
|
||||
var options = {
|
||||
host: 'euromillions.p.mashape.com',
|
||||
path: '/ResultsService/FindLast',
|
||||
//port: 443,
|
||||
headers: {
|
||||
accept: "text/plain",
|
||||
"X-Mashape-Key": "5A0H980jK6mshSFL24ZmfiRrNHV2p1d1fhQjsngtx8QWuO9oe4"
|
||||
/* 'Content-Type': 'application/json',
|
||||
const options = {
|
||||
'host': 'euromillions.p.mashape.com',
|
||||
'path': '/ResultsService/FindLast',
|
||||
//port: 443,
|
||||
'headers': {
|
||||
'accept': 'text/plain',
|
||||
'X-Mashape-Key': '5A0H980jK6mshSFL24ZmfiRrNHV2p1d1fhQjsngtx8QWuO9oe4'
|
||||
|
||||
/* 'Content-Type': 'application/json',
|
||||
'Content-Length': Buffer.byteLength(data)*/
|
||||
|
||||
},
|
||||
method: 'GET'
|
||||
};
|
||||
},
|
||||
'method': 'GET'
|
||||
};
|
||||
|
||||
/*
|
||||
unirest.get("https://euromillions.p.mashape.com/ResultsService/FindLast")
|
||||
.header("X-Mashape-Key", "5A0H980jK6mshSFL24ZmfiRrNHV2p1d1fhQjsngtx8QWuO9oe4")
|
||||
.header("Accept", "text/plain")
|
||||
.end(function (result) {
|
||||
console.log(result.status, result.headers, result.body);
|
||||
/*
|
||||
unirest.get("https://euromillions.p.mashape.com/ResultsService/FindLast")
|
||||
.header("X-Mashape-Key", "5A0H980jK6mshSFL24ZmfiRrNHV2p1d1fhQjsngtx8QWuO9oe4")
|
||||
.header("Accept", "text/plain")
|
||||
.end(function (result) {
|
||||
console.log(result.status, result.headers, result.body);
|
||||
});
|
||||
*/
|
||||
|
||||
https.request(options).on('response', function (response) {
|
||||
let data = '';
|
||||
response.on('data', function (chunk) {
|
||||
data += chunk;
|
||||
});
|
||||
*/
|
||||
|
||||
https.request(options).on('response', function (response) {
|
||||
var data = '';
|
||||
response.on("data", function (chunk) {
|
||||
data += chunk;
|
||||
});
|
||||
response.on('end', function () {
|
||||
//console.log(data);
|
||||
callback(JSON.parse(data));
|
||||
});
|
||||
}).end();
|
||||
response.on('end', function () {
|
||||
//console.log(data);
|
||||
callback(JSON.parse(data));
|
||||
});
|
||||
}).end();
|
||||
}
|
||||
|
||||
function sortNumber(a, b) {
|
||||
return a - b;
|
||||
return a - b;
|
||||
}
|
||||
|
||||
function dynamicSort(property) {
|
||||
var sortOrder = 1;
|
||||
if (property[0] === "-") {
|
||||
sortOrder = -1;
|
||||
property = property.substr(1);
|
||||
}
|
||||
return function (a, b) {
|
||||
var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
|
||||
return result * sortOrder;
|
||||
}
|
||||
let sortOrder = 1;
|
||||
if (property[0] === '-') {
|
||||
sortOrder = -1;
|
||||
property = property.substr(1);
|
||||
}
|
||||
|
||||
return function (a, b) {
|
||||
const result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
|
||||
|
||||
return result * sortOrder;
|
||||
};
|
||||
}
|
||||
|
||||
function buildArray() {
|
||||
for (var x = 0; x < 51; x++) {
|
||||
var l = [];
|
||||
for (var y = 0; y < 51; y++) {
|
||||
l.push(0);
|
||||
}
|
||||
m[x] = l;
|
||||
}
|
||||
for (let x = 0; x < 51; x++) {
|
||||
const l = [];
|
||||
for (let y = 0; y < 51; y++)
|
||||
l.push(0);
|
||||
|
||||
m[x] = l;
|
||||
}
|
||||
}
|
||||
|
||||
function buildTable() {
|
||||
var area = $('area');
|
||||
// clean area.
|
||||
/* while (area.lastChild) {
|
||||
const area = $('area');
|
||||
// clean area.
|
||||
/* while (area.lastChild) {
|
||||
area.removeChild(area.lastChild);
|
||||
}
|
||||
*/
|
||||
var table = document.createElement('table');
|
||||
var row = document.createElement('tr');
|
||||
const table = document.createElement('table');
|
||||
var row = document.createElement('tr');
|
||||
var cell = document.createElement('td');
|
||||
var p = document.createTextNode('---');
|
||||
cell.appendChild(p);
|
||||
row.appendChild(cell);
|
||||
for (var x = 1; x < 50; x++) {
|
||||
var cell = document.createElement('td');
|
||||
var p = document.createTextNode('---')
|
||||
var p = document.createTextNode(x);
|
||||
cell.appendChild(p);
|
||||
row.appendChild(cell);
|
||||
for (var x = 1; x < 50; x++) {
|
||||
var cell = document.createElement('td');
|
||||
var p = document.createTextNode(x)
|
||||
cell.appendChild(p);
|
||||
row.appendChild(cell);
|
||||
}
|
||||
table.appendChild(row);
|
||||
/**
|
||||
}
|
||||
table.appendChild(row);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
for (var y = 0; y < 51; y++) {
|
||||
var row = document.createElement('tr');
|
||||
var cell = document.createElement('td');
|
||||
var p = document.createTextNode('[' + parseInt(y + 1) + ']')
|
||||
cell.appendChild(p);
|
||||
row.appendChild(cell);
|
||||
for (var x = 1; x < 51; x++) {
|
||||
var cell = document.createElement('td');
|
||||
var p = document.createTextNode(m[y][x - 1])
|
||||
cell.appendChild(p);
|
||||
row.appendChild(cell);
|
||||
}
|
||||
table.appendChild(row);
|
||||
for (let y = 0; y < 51; y++) {
|
||||
var row = document.createElement('tr');
|
||||
var cell = document.createElement('td');
|
||||
var p = document.createTextNode(`[${ parseInt(y + 1) }]`);
|
||||
cell.appendChild(p);
|
||||
row.appendChild(cell);
|
||||
for (var x = 1; x < 51; x++) {
|
||||
var cell = document.createElement('td');
|
||||
var p = document.createTextNode(m[y][x - 1]);
|
||||
cell.appendChild(p);
|
||||
row.appendChild(cell);
|
||||
}
|
||||
area.appendChild(table);
|
||||
table.appendChild(row);
|
||||
}
|
||||
area.appendChild(table);
|
||||
}
|
||||
|
||||
function calc() {
|
||||
var i = 0;
|
||||
for (i = 0; i < re.length - 1; i++) {
|
||||
console.log(re[i]);
|
||||
for (var s = 1; s < 6; s++) {
|
||||
var cv = re[i][s];
|
||||
console.log("row: " + cv);
|
||||
for (var n = 1; n < 6; n++) {
|
||||
if (n != s) {
|
||||
workVal = re[i][n];
|
||||
console.log(workVal);
|
||||
m[cv - 1][workVal - 1]++;
|
||||
}
|
||||
}
|
||||
let i = 0;
|
||||
for (i = 0; i < re.length - 1; i++) {
|
||||
console.log(re[i]);
|
||||
for (let s = 1; s < 6; s++) {
|
||||
const cv = re[i][s];
|
||||
console.log(`row: ${ cv}`);
|
||||
for (let n = 1; n < 6; n++)
|
||||
if (n != s) {
|
||||
workVal = re[i][n];
|
||||
console.log(workVal);
|
||||
m[cv - 1][workVal - 1]++;
|
||||
}
|
||||
}
|
||||
buildTable();
|
||||
}
|
||||
buildTable();
|
||||
}
|
||||
|
||||
function othercalc() {
|
||||
var i = 0;
|
||||
// var p = 1 / ((-1)*re.length);
|
||||
var p = 1.0 / (re.length);
|
||||
console.log('P', p);
|
||||
let i = 0;
|
||||
// var p = 1 / ((-1)*re.length);
|
||||
const p = 1.0 / (re.length);
|
||||
console.log('P', p);
|
||||
|
||||
for (i = 0; i < re.length - 1; i++) {
|
||||
console.log((p * i));
|
||||
// console.log(re[i]);
|
||||
for (var s = 1; s < 6; s++) {
|
||||
var cv = re[i][s];
|
||||
// console.log("row: " + cv);
|
||||
for (var n = 1; n < 6; n++) {
|
||||
if (n != s) {
|
||||
workVal = re[i][n];
|
||||
// console.log(workVal);
|
||||
// m[cv-1][workVal-1]++;
|
||||
var flag = false;
|
||||
for (var t = 0; t < mo.length; t++) {
|
||||
if (mo[t].a == cv && mo[t].b == workVal) {
|
||||
if (typeof mo[t].c == 'undefined' || mo[t].c == null)
|
||||
{
|
||||
mo[t].c = 0;
|
||||
}
|
||||
mo[t].c++;
|
||||
flag = true;
|
||||
// mo[t].v++;
|
||||
/*
|
||||
for (i = 0; i < re.length - 1; i++) {
|
||||
console.log((p * i));
|
||||
// console.log(re[i]);
|
||||
for (let s = 1; s < 6; s++) {
|
||||
const cv = re[i][s];
|
||||
// console.log("row: " + cv);
|
||||
for (let n = 1; n < 6; n++)
|
||||
if (n != s) {
|
||||
workVal = re[i][n];
|
||||
// console.log(workVal);
|
||||
// m[cv-1][workVal-1]++;
|
||||
let flag = false;
|
||||
for (var t = 0; t < mo.length; t++)
|
||||
if (mo[t].a == cv && mo[t].b == workVal) {
|
||||
if (typeof mo[t].c === 'undefined' || mo[t].c == null)
|
||||
mo[t].c = 0;
|
||||
|
||||
mo[t].c++;
|
||||
flag = true;
|
||||
// mo[t].v++;
|
||||
/*
|
||||
if (i < (re.length/2))
|
||||
mo[t].v = mo[t].v - (p * i)
|
||||
else
|
||||
*/
|
||||
|
||||
// original weighting
|
||||
//mo[t].v = mo[t].v + (p * i);
|
||||
// original weighting
|
||||
//mo[t].v = mo[t].v + (p * i);
|
||||
|
||||
//reverse weighting..
|
||||
mo[t].v = mo[t].v + (1-(p * i));
|
||||
console.log(mo[t], 1-(p*i));
|
||||
//;
|
||||
//mo[t].v = mo[t].v + 1;
|
||||
// ;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
if (!flag) {
|
||||
mo.push({
|
||||
a: cv,
|
||||
b: workVal,
|
||||
v: 1
|
||||
});
|
||||
}
|
||||
}
|
||||
//reverse weighting..
|
||||
mo[t].v = mo[t].v + (1 - (p * i));
|
||||
console.log(mo[t], 1 - (p * i));
|
||||
//;
|
||||
//mo[t].v = mo[t].v + 1;
|
||||
// ;
|
||||
}
|
||||
|
||||
if (!flag)
|
||||
mo.push({
|
||||
'a': cv,
|
||||
'b': workVal,
|
||||
'v': 1
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
console.log("******************************************");
|
||||
mo.sort(dynamicSort("v"));
|
||||
console.log('******************************************');
|
||||
mo.sort(dynamicSort('v'));
|
||||
|
||||
//for (var t = (mo.length - 20); t < mo.length; t++) {
|
||||
var t = mo.length - 1;
|
||||
while (line.length < 5) {
|
||||
if (line.indexOf(mo[t].a) == -1 && line.length < 5) {
|
||||
line.push(mo[t].a);
|
||||
}
|
||||
if (line.indexOf(mo[t].b) == -1 && line.length < 5) {
|
||||
line.push(mo[t].b);
|
||||
}
|
||||
t = t - 1;
|
||||
}
|
||||
//for (var t = (mo.length - 20); t < mo.length; t++) {
|
||||
var t = mo.length - 1;
|
||||
while (line.length < 5) {
|
||||
if (line.indexOf(mo[t].a) == -1 && line.length < 5)
|
||||
line.push(mo[t].a);
|
||||
|
||||
// console.log(line);
|
||||
if (line.indexOf(mo[t].b) == -1 && line.length < 5)
|
||||
line.push(mo[t].b);
|
||||
|
||||
console.log(line.sort());
|
||||
t = t - 1;
|
||||
}
|
||||
|
||||
resultsObj.mainline = line.sort();
|
||||
resultsObj.otherLine = [];
|
||||
resultsObj.otherLine.push(mo[mo.length - 1].a);
|
||||
resultsObj.otherLine.push(mo[mo.length - 1].b);
|
||||
// console.log(line);
|
||||
|
||||
for (var t = mo.length - 1; t > (mo.length - 3); t--) {
|
||||
// if (mo[t].v >= 3) {
|
||||
if (mo[t].v > 1) {
|
||||
console.log(mo[t].a + ', ' + mo[t].b + ", " + mo[t].v)
|
||||
}
|
||||
}
|
||||
// buildTable();
|
||||
console.log(line.sort());
|
||||
|
||||
resultsObj.mainline = line.sort();
|
||||
resultsObj.otherLine = [];
|
||||
resultsObj.otherLine.push(mo[mo.length - 1].a);
|
||||
resultsObj.otherLine.push(mo[mo.length - 1].b);
|
||||
|
||||
for (var t = mo.length - 1; t > (mo.length - 3); t--)
|
||||
// if (mo[t].v >= 3) {
|
||||
if (mo[t].v > 1)
|
||||
console.log(`${mo[t].a }, ${ mo[t].b }, ${ mo[t].v}`);
|
||||
|
||||
|
||||
// buildTable();
|
||||
}
|
||||
|
||||
function tripCalc() {
|
||||
var blist = [[0, 1, 2], [0, 1, 3], [0, 1, 4], [0, 2, 3], [0, 2, 4], [0, 3, 4], [1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]];
|
||||
var p = 1.0 / (re.length);
|
||||
var a, b, c, cur;
|
||||
//var trip = [];
|
||||
//console.log
|
||||
for (i = 0; i < re.length - 1; i++) {
|
||||
const blist = [[0, 1, 2], [0, 1, 3], [0, 1, 4], [0, 2, 3], [0, 2, 4], [0, 3, 4], [1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]];
|
||||
const p = 1.0 / (re.length);
|
||||
let a, b, c, cur;
|
||||
//var trip = [];
|
||||
//console.log
|
||||
for (i = 0; i < re.length - 1; i++)
|
||||
|
||||
for (var t = 0; t < blist.length; t++) {
|
||||
cur = blist[t];
|
||||
for (let t = 0; t < blist.length; t++) {
|
||||
cur = blist[t];
|
||||
|
||||
a = re[i][cur[0] + 1];
|
||||
b = re[i][cur[1] + 1];
|
||||
c = re[i][cur[2] + 1];
|
||||
a = re[i][cur[0] + 1];
|
||||
b = re[i][cur[1] + 1];
|
||||
c = re[i][cur[2] + 1];
|
||||
|
||||
|
||||
// console.log(a + ", " + b + "," + c);
|
||||
// console.log(a + ", " + b + "," + c);
|
||||
|
||||
|
||||
var found = false;
|
||||
for (y = 0; y < trip.length; y++) {
|
||||
var nums = trip[y].nums;
|
||||
let found = false;
|
||||
for (y = 0; y < trip.length; y++) {
|
||||
const nums = trip[y].nums;
|
||||
|
||||
if (!found) {
|
||||
if ((nums.indexOf(a) != -1) && (nums.indexOf(b) != -1) && (nums.indexOf(c) != -1)) {
|
||||
/* console.log("nums:" + nums);
|
||||
if (!found)
|
||||
if ((nums.indexOf(a) != -1) && (nums.indexOf(b) != -1) && (nums.indexOf(c) != -1)) {
|
||||
/* console.log("nums:" + nums);
|
||||
console.log("want: " + a + ", " + b + "," + c);
|
||||
console.log("A:" + nums.indexOf(a));
|
||||
console.log("B:" + nums.indexOf(b));
|
||||
console.log("C:" + nums.indexOf(c));
|
||||
*/
|
||||
|
||||
trip[y].cnt = trip[y].cnt + (p * i);
|
||||
// trip[y].cnt = trip[y].cnt + 1;
|
||||
trip[y].cnt = trip[y].cnt + (p * i);
|
||||
// trip[y].cnt = trip[y].cnt + 1;
|
||||
|
||||
// console.log(">>>" + trip[y].cnt);
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
// console.log(">>>" + trip[y].cnt);
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (!found)
|
||||
|
||||
if (!found) {
|
||||
|
||||
//trip.push({nums:[a,b,c],cnt:(p * i)});
|
||||
trip.push({
|
||||
nums: [a, b, c],
|
||||
cnt: 1
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
var max = 0;
|
||||
for (y = 0; y < trip.length; y++) {
|
||||
if (trip[y].cnt > max) max = trip[y].cnt;
|
||||
}
|
||||
console.log("Max: " + max);
|
||||
for (y = 0; y < trip.length; y++) {
|
||||
if (trip[y].cnt == max) {
|
||||
console.log(trip[y].cnt + ", " + trip[y].nums);
|
||||
|
||||
resultsObj.otherLine = resultsObj.otherLine.concat(trip[y].nums).sort();
|
||||
|
||||
}
|
||||
//trip.push({nums:[a,b,c],cnt:(p * i)});
|
||||
trip.push({
|
||||
'nums': [a, b, c],
|
||||
'cnt': 1
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// console.log(JSON.stringify(trip));
|
||||
let max = 0;
|
||||
for (y = 0; y < trip.length; y++)
|
||||
if (trip[y].cnt > max) max = trip[y].cnt;
|
||||
|
||||
console.log(`Max: ${ max}`);
|
||||
for (y = 0; y < trip.length; y++)
|
||||
if (trip[y].cnt == max) {
|
||||
console.log(`${trip[y].cnt }, ${ trip[y].nums}`);
|
||||
|
||||
resultsObj.otherLine = resultsObj.otherLine.concat(trip[y].nums).sort();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// console.log(JSON.stringify(trip));
|
||||
}
|
||||
|
||||
function starcalc() {
|
||||
var i = 0;
|
||||
var p = 1 / re.length;
|
||||
for (i = 0; i < re.length - 1; i++) {
|
||||
// console.log(re[i]);
|
||||
for (var s = 6; s < 8; s++) {
|
||||
var cv = re[i][s];
|
||||
// console.log("row: " + cv);
|
||||
for (var n = 6; n < 8; n++) {
|
||||
if (n != s) {
|
||||
workVal = re[i][n];
|
||||
// console.log(workVal);
|
||||
// m[cv-1][workVal-1]++;
|
||||
var flag = false;
|
||||
for (var t = 0; t < mo.length; t++) {
|
||||
if (mo[t].a == cv && mo[t].b == workVal) {
|
||||
flag = true;
|
||||
mo[t].v++;
|
||||
let i = 0;
|
||||
const p = 1 / re.length;
|
||||
for (i = 0; i < re.length - 1; i++)
|
||||
// console.log(re[i]);
|
||||
for (let s = 6; s < 8; s++) {
|
||||
const cv = re[i][s];
|
||||
// console.log("row: " + cv);
|
||||
for (let n = 6; n < 8; n++)
|
||||
if (n != s) {
|
||||
workVal = re[i][n];
|
||||
// console.log(workVal);
|
||||
// m[cv-1][workVal-1]++;
|
||||
let flag = false;
|
||||
for (var t = 0; t < mo.length; t++)
|
||||
if (mo[t].a == cv && mo[t].b == workVal) {
|
||||
flag = true;
|
||||
mo[t].v++;
|
||||
|
||||
mo[t].v = mo[t].v + (p * i);
|
||||
}
|
||||
}
|
||||
if (!flag) {
|
||||
mo.push({
|
||||
a: cv,
|
||||
b: workVal,
|
||||
v: 1
|
||||
});
|
||||
}
|
||||
}
|
||||
mo[t].v = mo[t].v + (p * i);
|
||||
}
|
||||
|
||||
if (!flag)
|
||||
mo.push({
|
||||
'a': cv,
|
||||
'b': workVal,
|
||||
'v': 1
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
console.log("******************************************");
|
||||
mo.sort(dynamicSort("v"));
|
||||
|
||||
var t = mo.length - 1;
|
||||
console.log('******************************************');
|
||||
mo.sort(dynamicSort('v'));
|
||||
|
||||
var starOutput = [];
|
||||
starOutput.push(mo[t].a);
|
||||
starOutput.push(mo[t].b);
|
||||
var t = mo.length - 1;
|
||||
|
||||
const starOutput = [];
|
||||
starOutput.push(mo[t].a);
|
||||
starOutput.push(mo[t].b);
|
||||
|
||||
|
||||
resultsObj.mainstars = [];
|
||||
resultsObj.mainstars.push(starOutput.sort()[0]);
|
||||
resultsObj.mainstars.push(starOutput.sort()[1]);
|
||||
resultsObj.mainstars = [];
|
||||
resultsObj.mainstars.push(starOutput.sort()[0]);
|
||||
resultsObj.mainstars.push(starOutput.sort()[1]);
|
||||
|
||||
resultsObj.otherStars = [];
|
||||
resultsObj.otherStars.push(mo[mo.length - 3].a);
|
||||
resultsObj.otherStars.push(mo[mo.length - 3].b);
|
||||
resultsObj.otherStars = [];
|
||||
resultsObj.otherStars.push(mo[mo.length - 3].a);
|
||||
resultsObj.otherStars.push(mo[mo.length - 3].b);
|
||||
|
||||
|
||||
|
||||
//console.log('Stars: ' + mo[t].a + ', ' + mo[t].b);
|
||||
//console.log('Stars: ' + mo[t].a + ', ' + mo[t].b);
|
||||
|
||||
console.log('Stars: ' + starOutput.sort()[0] + ', ' + starOutput.sort()[1]);
|
||||
for (var t = mo.length - 6; t < mo.length; t++) {
|
||||
if (mo[t].v >= 3) {
|
||||
console.log(mo[t].a + ', ' + mo[t].b + ", " + mo[t].v)
|
||||
}
|
||||
}
|
||||
console.log(`Stars: ${ starOutput.sort()[0] }, ${ starOutput.sort()[1]}`);
|
||||
for (var t = mo.length - 6; t < mo.length; t++)
|
||||
if (mo[t].v >= 3)
|
||||
console.log(`${mo[t].a }, ${ mo[t].b }, ${ mo[t].v}`);
|
||||
|
||||
// buildTable();
|
||||
|
||||
|
||||
// buildTable();
|
||||
}
|
||||
|
||||
function performCalcs() {
|
||||
buildArray();
|
||||
//buildTable();
|
||||
othercalc();
|
||||
console.log("---------------------------------------");
|
||||
starcalc();
|
||||
buildArray();
|
||||
//buildTable();
|
||||
othercalc();
|
||||
console.log('---------------------------------------');
|
||||
starcalc();
|
||||
|
||||
tripCalc();
|
||||
tripCalc();
|
||||
}
|
||||
|
||||
function prepareResults() {
|
||||
resultsObj.mainline = resultsObj.mainline.sort(sortNumber);
|
||||
resultsObj.otherLine = resultsObj.otherLine.sort(sortNumber);
|
||||
resultsObj.mainline = resultsObj.mainline.sort(sortNumber);
|
||||
resultsObj.otherLine = resultsObj.otherLine.sort(sortNumber);
|
||||
|
||||
resultsObj.mainstars = resultsObj.mainstars.sort(sortNumber);
|
||||
resultsObj.otherStars = resultsObj.otherStars.sort(sortNumber);
|
||||
resultsObj.mainstars = resultsObj.mainstars.sort(sortNumber);
|
||||
resultsObj.otherStars = resultsObj.otherStars.sort(sortNumber);
|
||||
}
|
||||
|
||||
|
||||
function saveData() {
|
||||
jsonfile.writeFileSync(file, re);
|
||||
jsonfile.writeFileSync(file, re);
|
||||
}
|
||||
|
||||
function sendEmail() {
|
||||
var email = {
|
||||
to: 'martind2000@gmail.com',
|
||||
subject: 'Todays numbers'
|
||||
};
|
||||
const email = {
|
||||
'to': 'martind2000@gmail.com',
|
||||
'subject': 'Todays numbers'
|
||||
};
|
||||
|
||||
|
||||
var template = { file: './jade/output.jade', locals: resultsObj };
|
||||
mailer.sendTemplate(email, template, function(err){
|
||||
const template = {'file': './jade/output.jade', 'locals': resultsObj};
|
||||
mailer.sendTemplate(email, template, function(err) {
|
||||
if(err) throw err;
|
||||
console.log('compiled template email sent');
|
||||
});
|
||||
|
||||
console.log('compiled template email sent');
|
||||
});
|
||||
}
|
||||
|
||||
function processData(data) {
|
||||
newArray.push(data.drawns[0].date);
|
||||
|
||||
numbers = data.drawns[0].numbers.split(' ');
|
||||
for (var i = 0; i < numbers.length; ++i) {
|
||||
numbers[i] = parseInt(numbers[i]);
|
||||
}
|
||||
|
||||
stars = data.drawns[0].stars.split(' ');
|
||||
for (var i = 0; i < stars.length; ++i) {
|
||||
stars[i] = parseInt(stars[i]);
|
||||
}
|
||||
newArray = newArray.concat(numbers);
|
||||
newArray = newArray.concat(stars);
|
||||
numbers = data.drawns[0].numbers.split(' ');
|
||||
for (var i = 0; i < numbers.length; ++i)
|
||||
numbers[i] = parseInt(numbers[i]);
|
||||
|
||||
|
||||
re.unshift(newArray);
|
||||
stars = data.drawns[0].stars.split(' ');
|
||||
for (var i = 0; i < stars.length; ++i)
|
||||
stars[i] = parseInt(stars[i]);
|
||||
|
||||
newArray = newArray.concat(numbers);
|
||||
newArray = newArray.concat(stars);
|
||||
|
||||
|
||||
re.unshift(newArray);
|
||||
}
|
||||
function processDataV2(data) {
|
||||
var newArray = [];
|
||||
var numbers, stars, date ;
|
||||
const newArray = [];
|
||||
let numbers, stars, date;
|
||||
|
||||
console.log(data);
|
||||
|
||||
date = /(\/Date\()([0-9]+)([\s\S]+)/.exec(data.Date);
|
||||
var newdate = Sugar.Date.format(new Date(parseInt(date[2])), '%Y-%m-%d');
|
||||
const newdate = Sugar.Date.format(new Date(parseInt(date[2])), '%Y-%m-%d');
|
||||
|
||||
newArray.push(newdate);
|
||||
|
||||
@ -483,58 +466,135 @@ function processDataV2(data) {
|
||||
|
||||
re.unshift(newArray);
|
||||
console.log(newArray);
|
||||
|
||||
}
|
||||
|
||||
function processDataV2B(data) {
|
||||
var newArray = [];
|
||||
var numbers=[], stars=[], date ;
|
||||
let newArray = [];
|
||||
const numbers = [], stars = [];
|
||||
let date;
|
||||
|
||||
console.log(data);
|
||||
|
||||
date = /(\/Date\()([0-9]+)([\s\S]+)/.exec(data.Date);
|
||||
date = /(\/Date\()([0-9]+)([\s\S]+)/.exec(data.Date);
|
||||
|
||||
date = date[2];
|
||||
date = parseInt(date);
|
||||
date = parseInt(date);
|
||||
|
||||
date = new Date(date);
|
||||
date = new Date(date);
|
||||
|
||||
|
||||
console.log(dateFormat(date));
|
||||
|
||||
date = dateFormat(date,"yyyy-dd-mm" );
|
||||
date = dateFormat(date, 'yyyy-dd-mm' );
|
||||
|
||||
numbers.push(parseInt(data.Num1));
|
||||
numbers.push(parseInt(data.Num2));
|
||||
numbers.push(parseInt(data.Num3));
|
||||
numbers.push(parseInt(data.Num4));
|
||||
numbers.push(parseInt(data.Num5));
|
||||
numbers.push(parseInt(data.Num1));
|
||||
numbers.push(parseInt(data.Num2));
|
||||
numbers.push(parseInt(data.Num3));
|
||||
numbers.push(parseInt(data.Num4));
|
||||
numbers.push(parseInt(data.Num5));
|
||||
|
||||
stars.push(parseInt(data.Star1));
|
||||
stars.push(parseInt(data.Star2));
|
||||
stars.push(parseInt(data.Star1));
|
||||
stars.push(parseInt(data.Star2));
|
||||
|
||||
newArray.push(date);
|
||||
newArray = newArray.concat(numbers);
|
||||
newArray = newArray.concat(stars);
|
||||
newArray.push(date);
|
||||
newArray = newArray.concat(numbers);
|
||||
newArray = newArray.concat(stars);
|
||||
|
||||
|
||||
re.unshift(newArray);
|
||||
re.unshift(newArray);
|
||||
|
||||
console.log(newArray);
|
||||
console.log(newArray);
|
||||
|
||||
return newArray;
|
||||
}
|
||||
|
||||
function othercalcV2() {
|
||||
// Var p = 1 / ((-1)*numberStore.length);
|
||||
const p = 1.0 / (numberStore.length);
|
||||
|
||||
for (let i = 0; i < numberStore.length - 1; i++) {
|
||||
const thisRow = [];
|
||||
|
||||
for (let s = 1; s < 6; s++) {
|
||||
const cv = numberStore[i][s];
|
||||
|
||||
for (let n = 1; n < 6; n++)
|
||||
if (n !== s) {
|
||||
const workVal = numberStore[i][n];
|
||||
// Console.log(workVal);
|
||||
// m[cv-1][workVal-1]++;
|
||||
|
||||
// Console.log('mo', mo);
|
||||
|
||||
const tempArray = [cv, workVal].sort((a, b) => {
|
||||
if (a < b)
|
||||
return -1;
|
||||
|
||||
return a > b ? 1 : 0;
|
||||
});
|
||||
const id = tempArray.join('-');
|
||||
|
||||
if (thisRow.indexOf(id) === -1) {
|
||||
const record = newNumberContainer[id] || { 'c': 0, 'v': 0, 'id': id };
|
||||
record.c++;
|
||||
record.v += (p * i);
|
||||
newNumberContainer[id] = record;
|
||||
|
||||
thisRow.push(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let flatArray = Object.keys(newNumberContainer).map((key) => newNumberContainer[key]);
|
||||
|
||||
flatArray = flatArray.sort((a, b) => {
|
||||
if (a.c < b.c)
|
||||
return 1;
|
||||
|
||||
return a.c > b.c ? -1 : 0;
|
||||
});
|
||||
|
||||
let line = [];
|
||||
let lineI = 0;
|
||||
|
||||
while (line.length < 5) {
|
||||
const pair = flatArray[lineI];
|
||||
pairS = pair.id.split('-');
|
||||
|
||||
if (line.indexOf(pairS[0]) === -1 && line.length < 5)
|
||||
line.push(pairS[0]);
|
||||
|
||||
if (line.indexOf(pairS[1]) === -1 && line.length < 5)
|
||||
line.push(pairS[1]);
|
||||
|
||||
// console.log(line);
|
||||
lineI++;
|
||||
}
|
||||
|
||||
line = line.sort((a, b) => {
|
||||
if (~~a < ~~b)
|
||||
return -1;
|
||||
|
||||
return ~~a > ~~b ? 1 : 0;
|
||||
});
|
||||
|
||||
//console.log(line);
|
||||
|
||||
return line;
|
||||
}
|
||||
|
||||
function GO() {
|
||||
re = [];
|
||||
resultsObj = {};
|
||||
re = [];
|
||||
resultsObj = {};
|
||||
|
||||
jsonfile.readFile(file, function (err, obj) {
|
||||
console.log(err);
|
||||
re = obj;
|
||||
jsonfile.readFile(file, function (err, obj) {
|
||||
console.log(err);
|
||||
re = obj;
|
||||
|
||||
|
||||
|
||||
/* performCalcs();
|
||||
/* performCalcs();
|
||||
|
||||
prepareResults();
|
||||
|
||||
@ -542,22 +602,21 @@ function GO() {
|
||||
*/
|
||||
|
||||
|
||||
resultsQuery(function (a) {
|
||||
//processData(a);
|
||||
processDataV2(a);
|
||||
resultsQuery(function (a) {
|
||||
//processData(a);
|
||||
processDataV2(a);
|
||||
|
||||
performCalcs();
|
||||
performCalcs();
|
||||
|
||||
prepareResults();
|
||||
prepareResults();
|
||||
|
||||
console.log(resultsObj);
|
||||
console.log(resultsObj);
|
||||
|
||||
sendEmail();
|
||||
|
||||
saveData();
|
||||
});
|
||||
// sendEmail();
|
||||
|
||||
saveData();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -567,8 +626,8 @@ function GO() {
|
||||
|
||||
//sendEmail();
|
||||
|
||||
cron.schedule('10 13 * * 2,5', function(){
|
||||
cron.schedule('10 13 * * 2,5', function() {
|
||||
GO();
|
||||
// console.log('tick');
|
||||
return -1;
|
||||
// console.log('tick');
|
||||
return -1;
|
||||
});
|
||||
|
104
lotV2.js
104
lotV2.js
@ -4,16 +4,12 @@ const jsonfile = require('jsonfile'),
|
||||
|
||||
const Sugar = require('sugar-date');
|
||||
|
||||
const file = 'data/data.json';
|
||||
const m = [],
|
||||
prev = [],
|
||||
mo = [],
|
||||
star = [],
|
||||
trip = [],
|
||||
results = [],
|
||||
line = [];
|
||||
const pusher = require('./pusher');
|
||||
|
||||
let newNumberContainer = {};
|
||||
const file = 'data/data.json';
|
||||
const m = [];
|
||||
|
||||
const newNumberContainer = {};
|
||||
|
||||
let numberStore = [];
|
||||
let resultsObj = {};
|
||||
@ -21,9 +17,9 @@ let resultsObj = {};
|
||||
function buildArray() {
|
||||
for (let x = 0; x < 51; x++) {
|
||||
const l = [];
|
||||
for (let y = 0; y < 51; y++) {
|
||||
for (let y = 0; y < 51; y++)
|
||||
l.push(0);
|
||||
}
|
||||
|
||||
m[x] = l;
|
||||
}
|
||||
}
|
||||
@ -38,14 +34,16 @@ function dynamicSort(property) {
|
||||
sortOrder = -1;
|
||||
property = property.substr(1);
|
||||
}
|
||||
|
||||
return function(a, b) {
|
||||
const result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
|
||||
return result * sortOrder;
|
||||
}
|
||||
const result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
|
||||
|
||||
return result * sortOrder;
|
||||
};
|
||||
}
|
||||
|
||||
function othercalcV2() {
|
||||
// Var p = 1 / ((-1)*numberStore.length);
|
||||
// Var p = 1 / ((-1)*numberStore.length);
|
||||
const p = 1.0 / (numberStore.length);
|
||||
|
||||
for (let i = 0; i < numberStore.length - 1; i++) {
|
||||
@ -54,25 +52,24 @@ function othercalcV2() {
|
||||
for (let s = 1; s < 6; s++) {
|
||||
const cv = numberStore[i][s];
|
||||
|
||||
for (let n = 1; n < 6; n++) {
|
||||
for (let n = 1; n < 6; n++)
|
||||
if (n !== s) {
|
||||
let workVal = numberStore[i][n];
|
||||
const workVal = numberStore[i][n];
|
||||
// Console.log(workVal);
|
||||
// m[cv-1][workVal-1]++;
|
||||
|
||||
// Console.log('mo', mo);
|
||||
|
||||
const tempArray = [cv, workVal].sort((a, b) => {
|
||||
if (a < b) {
|
||||
return -1;
|
||||
}
|
||||
return a > b ? 1 : 0;
|
||||
});
|
||||
if (a < b)
|
||||
return -1;
|
||||
|
||||
return a > b ? 1 : 0;
|
||||
});
|
||||
const id = tempArray.join('-');
|
||||
|
||||
if (thisRow.indexOf(id) === -1) {
|
||||
|
||||
const record = newNumberContainer[id] || {c: 0, v: 0, id: id};
|
||||
const record = newNumberContainer[id] || { 'c': 0, 'v': 0, 'id': id };
|
||||
record.c++;
|
||||
record.v += (p * i);
|
||||
newNumberContainer[id] = record;
|
||||
@ -80,52 +77,55 @@ function othercalcV2() {
|
||||
thisRow.push(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let flatArray = Object.keys(newNumberContainer).map((key) => newNumberContainer[key]);
|
||||
|
||||
flatArray = flatArray.sort((a, b) => {
|
||||
if (a.c < b.c) {
|
||||
return 1;
|
||||
}
|
||||
return a.c > b.c ? -1 : 0;
|
||||
});
|
||||
if (a.c < b.c)
|
||||
return 1;
|
||||
|
||||
return a.c > b.c ? -1 : 0;
|
||||
});
|
||||
|
||||
let line = [];
|
||||
let lineI = 0;
|
||||
|
||||
while (line.length < 5) {
|
||||
let pair = flatArray[lineI];
|
||||
const pair = flatArray[lineI];
|
||||
pairS = pair.id.split('-');
|
||||
|
||||
if (line.indexOf(pairS[0]) === -1 && line.length < 5) {
|
||||
if (line.indexOf(pairS[0]) === -1 && line.length < 5)
|
||||
line.push(pairS[0]);
|
||||
}
|
||||
if (line.indexOf(pairS[1]) === -1 && line.length < 5) {
|
||||
|
||||
if (line.indexOf(pairS[1]) === -1 && line.length < 5)
|
||||
line.push(pairS[1]);
|
||||
}
|
||||
// console.log(line);
|
||||
|
||||
// console.log(line);
|
||||
lineI++;
|
||||
}
|
||||
|
||||
line = line.sort((a, b) => {
|
||||
if (~~a < ~~b) {
|
||||
return -1;
|
||||
}
|
||||
return ~~a > ~~b ? 1 : 0;
|
||||
});
|
||||
if (~~a < ~~b)
|
||||
return -1;
|
||||
|
||||
console.log(line);
|
||||
return ~~a > ~~b ? 1 : 0;
|
||||
});
|
||||
|
||||
//console.log(line);
|
||||
|
||||
return line;
|
||||
}
|
||||
|
||||
|
||||
function performCalcs() {
|
||||
buildArray();
|
||||
//BuildTable();
|
||||
othercalcV2();
|
||||
let line = othercalcV2();
|
||||
console.log('---------------------------------------');
|
||||
console.log(`line: ${line}`);
|
||||
pusher.push(`line: ${line}`);
|
||||
// Starcalc();
|
||||
|
||||
// tripCalc();
|
||||
@ -137,20 +137,16 @@ function GO() {
|
||||
resultsObj = {};
|
||||
|
||||
jsonfile.readFile(file, function(err, obj) {
|
||||
console.log(err);
|
||||
numberStore = obj;
|
||||
console.log(err);
|
||||
numberStore = obj;
|
||||
|
||||
// Console.log(numberStore);
|
||||
performCalcs();
|
||||
// Console.log(numberStore);
|
||||
performCalcs();
|
||||
|
||||
//PrepareResults();
|
||||
//PrepareResults();
|
||||
|
||||
// console.log(resultsObj);
|
||||
|
||||
|
||||
|
||||
|
||||
});
|
||||
// console.log(resultsObj);
|
||||
});
|
||||
}
|
||||
|
||||
GO();
|
||||
|
@ -18,7 +18,10 @@
|
||||
"lot": "./lot.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"dateformat": "^2.0.0",
|
||||
"jsonfile": "^2.4.0",
|
||||
"log4js": "^2.3.3",
|
||||
"node-pushover": "^0.2.2",
|
||||
"sugar": "^2.0.1",
|
||||
"sugar-date": "^2.0.0"
|
||||
}
|
||||
|
26
pusher.js
Normal file
26
pusher.js
Normal file
@ -0,0 +1,26 @@
|
||||
/**
|
||||
*
|
||||
* User: Martin Donnelly
|
||||
* Date: 2016-04-08
|
||||
* Time: 16:35
|
||||
*
|
||||
*/
|
||||
var Pushover = require('node-pushover'), dateFormat = require('dateformat');
|
||||
var push = new Pushover({
|
||||
'token': 'aqnos2j4v4pjpry3hvnxq9646eup23',
|
||||
'user': 'BE2vgFxdHJw91lVGMRYvZDDmVa5cCM'
|
||||
});
|
||||
|
||||
|
||||
var logger = require('log4js').getLogger();
|
||||
|
||||
const prefix = process.env.NODE_ENV === 'production' ? 'Production' : 'Dev';
|
||||
const title = `mdLot ${ prefix } Alert`;
|
||||
module.exports = {
|
||||
|
||||
'push' : function(contents) {
|
||||
var now = new Date();
|
||||
var msg = `Updated at ${ dateFormat(now, 'dddd, mmmm dS, yyyy, HH:MM:ss') }\n\n${ contents }`;
|
||||
push.send(title, msg);
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue
Block a user