-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadv02.js
67 lines (53 loc) · 1.42 KB
/
adv02.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
#!/usr/bin/env node
const fs = require('fs');
let contents = fs.readFileSync("adv2.txt", 'utf8');
let ids = contents.split("\n");
ids.pop();
function part1(ids) {
let founds = {};
for (let i in ids) {
let str = ids[i];
let letters = {};
for (let j in str) {
let letter = str[j];
letters[letter] = (letters[letter] || 0) + 1;
}
let found = {};
for (let j in letters) {
if (letters[j] > 1) {
found[letters[j]] = 1;
}
}
let aFound = Object.keys(found);
for (let j in aFound) {
let n = aFound[j];
founds[n] = (founds[n] || 0) + 1;
};
}
console.log(founds);
}
function part2(ids) {
function diff(str1, str2) {
let length = Math.max(str1.length, str2.length);
let diff = 0;
for (let i = 0; i < length; i++) {
if (str1[i] !== str2[i])
diff++;
}
return diff;
}
let minDiff = contents[0].length + 1;
let minDiffStrs = [];
for (let i = 0; i < ids.length; i++) {
for (let j = i+1; j < ids.length; j++) {
let aDiff = diff(ids[i], ids[j]);
if (aDiff < minDiff) {
minDiff = aDiff;
minDiffStrs = [ids[i], ids[j], i, j];
}
}
}
console.log(minDiff, minDiffStrs);
}
part1(ids);
part2(ids);