-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathengine.js
More file actions
41 lines (36 loc) · 1.23 KB
/
engine.js
File metadata and controls
41 lines (36 loc) · 1.23 KB
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
const util = require('./util');
const database = require('./database');
const readline = require('readline');
const fs = require('fs');
const calculatePoints = inputFileName => new Promise((resolve) => {
let points = 0;
let lineCounterOut = 0;
const rdOut = readline.createInterface({
input: fs.createReadStream(`./output/${inputFileName}.out`),
});
rdOut.on('line', (lineOut) => {
const vehicle = new util.Vehicle();
const ridesIndexes = lineOut.split(' ').splice(1).filter(string => string).map(string => +string);
ridesIndexes.forEach((rideIndex) => {
const ride = database.rides[rideIndex];
const distance = util.calculateRideDistance(ride);
if (util.canRideBeCompletedOnTimeByVehicle(vehicle, ride)) {
points += distance;
}
if (util.willVehicleArriveOnTimeForBonus(vehicle, ride)) {
points += database.bonus;
}
const timeItWillTake = util.calculateTimeToCompleteRideForVehicle(vehicle, ride);
vehicle.posX = ride.endPosX;
vehicle.posY = ride.endPosY;
vehicle.step += timeItWillTake;
});
if (lineCounterOut === database.vehiclesCount - 1) {
resolve(points);
}
lineCounterOut++;
});
});
module.exports = {
calculatePoints,
};