-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
70 lines (60 loc) · 2.62 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
const http = require('http');
const minFireFly = require('./FireFlyAlg/minFireFly.js');
const funcs = require('./findExtremumOnFunc.js');
const visualizeData = require('./visualize/visualize.js');
const readFile = require('fs').readFile;
const normalizePath = require('path').normalize;
let params = require('./config.js');
function readFilePromise (pathToFile) {
return when.promise((resolve, reject) =>
readFile(normalizePath(pathToFile),
(err, data) => {
if (err) reject(err);
resolve(data);
}));
}
function min (arrFireFlies) {
return arrFireFlies.map((fireFly) => fireFly.rank).sort()[0];
}
function flyFireFlies (fireFliesAmount, lambda, params) {
return { fireFliesAmount,
minFireFly: minFireFly(params, lambda).rank
};
}
function visualizeFireFliesRes () {
const rangeFireFliesAmount = Array.from(new Array(10),
(_, index) => index*100 + 200);
return visualizeData(
funcs
.map(({ lambda, funcName, start, end }) =>
({ funcName,
arrBestFireFlies: (rangeFireFliesAmount
.map((fireFliesAmount) =>
flyFireFlies(fireFliesAmount,
lambda,
Object
.assign(params,
{ fireFliesAmount,
startPosition: start,
endPosition: end
}))))
})));
}
const server = http.createServer((req, res) => {
try {
res.writeHead(200, {'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json'});
res.end(visualizeFireFliesRes());
console.log('all successfully done');
}
catch (err) {
console.log('smth wrong', err);
res.writeHead(500, {'Access-Control-Allow-Origin': '*',
'Content-Type': 'text/plain'});
res.end('There is error ' + err.toString());
}
});
server.on('clientError', (err, socket) => {
socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
});
server.listen(8000);