-
Notifications
You must be signed in to change notification settings - Fork 0
/
day-17-2.js
54 lines (40 loc) · 1.07 KB
/
day-17-2.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
var input = [20, 15, 10, 5, 5];
var input = document.getElementsByTagName ("pre") [0].textContent.split ("\n");
delete input [input.length - 1];
for (var i = 0; i < input.length; i ++) {
input [i] = parseInt (input [i]);
}
var criteria = 150;
function sum (inputArray) {
var sum = 0;
for (var i in inputArray) sum += inputArray [i];
return sum;
}
function combinations (subject) {
var results = [];
var temporary = [];
var count = Math.pow (2, subject.length);
for (var i = 0; i < count; i++) {
temporary = [];
for (var j = 0; j < subject.length; j++) {
if ((i & Math.pow (2, j))) {
temporary.push (subject [j]);
}
}
if (sum (temporary) == criteria) {
results.push (temporary);
}
}
return results;
}
var solution = combinations (input);
var minimum = solution.length;
for (var i = 0; i < solution.length; i ++) {
if (solution [i].length < minimum) minimum = solution [i].length;
}
var count = 0;
for (var i = 0; i < solution.length; i ++) {
if (solution [i].length == minimum) count ++;
}
console.log (count);
alert (count); // 4