-
Notifications
You must be signed in to change notification settings - Fork 1
/
eurovision.js
62 lines (54 loc) · 1.54 KB
/
eurovision.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
'use strict';
const data = require('fs')
.readFileSync(__dirname + '/eurovision.csv', 'utf8')
.split('\n')
.map((str, i) => str
.split(',')
.map((element, j) =>
j > 0 || i === 0 ? parseInt(element) : element
)
);
data.pop();
const points = [12, 10, 8, 7, 6, 5, 4, 3, 2, 1];
const resultPoints = {};
for (let i = 1; i <= data[0][0]; i++) {
resultPoints[data[i][0]] = 0;
}
// console.log(resultPoints);
function comparePoints(arr) {
for (let i = 1; i <= arr[0][0]; i++) {
const sortedData = [];
for (let j = 1; j <= arr[0][0]; j++) {
sortedData[j-1] = arr[j][i];
}
sortedData.sort((x, y) => (y - x));
// console.log(sortedData);
for (let p in points) {
for (let k = 1; k <= arr[0][0]; k++) {
if (sortedData[p] === arr[k][i]) {
resultPoints[arr[k][0]] += points[p];
}
}
}
}
}
comparePoints(data);
// console.log(resultPoints);
const sortedPoints = Object.values(resultPoints).sort((x, y) => (y - x));
// console.log(sortedPoints);
const results = [];
const check = [];
for (let i = 0; i < 10; i++) {
for (let j in resultPoints) {
if (resultPoints[j] === sortedPoints[i] && !check.includes(j)) {
results[i] = [i+1, j, resultPoints[j]];
check.push(j);
// console.log(check);
break;
}
}
}
// console.log(results);
const fs = require('fs')
// fs.writeFileSync(__dirname + '/result.txt', results.map(str => str.join(' ')).join('\n'), 'utf8');
fs.writeFileSync(__dirname + '/result.csv', results.map(str => str.join()).join('\n'), 'utf8');