-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
45 lines (36 loc) · 1021 Bytes
/
index.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
const debug = require("debug")("challenge");
const fs = require("fs");
const path = require("path");
const readline = require("readline");
const { add, last, reduce, uniq } = require("ramda");
const dataDir = path.join(__dirname, "data");
const fStream = fs.createReadStream(path.join(dataDir, "large.in"));
const writeStream = fs.createWriteStream(path.join(dataDir, "result.out"));
const lineReader = readline.createInterface({
input: fStream
});
debug("App start");
lineReader.on("line", l => {
const numbers = l.split(" ");
if (numbers.length < 2) {
return null;
}
let hasSequence = false;
if (numbers.indexOf("0") >= 0) {
hasSequence = true;
} else {
const sums = reduce(
(acc, number) => {
acc.push(add(last(acc) || 0, number));
return acc;
},
[],
numbers
);
hasSequence = uniq(sums).length !== sums.length;
}
writeStream.write(hasSequence ? "yes\n" : "no\n");
});
process.on("beforeExit", () => {
debug("App finished.");
});