File tree Expand file tree Collapse file tree 1 file changed +14
-6
lines changed
src/main/java/com/sbaars/adventofcode/year15/days Expand file tree Collapse file tree 1 file changed +14
-6
lines changed Original file line number Diff line number Diff line change @@ -16,7 +16,7 @@ public Day20() {
16
16
public static void main (String [] args ) {
17
17
Day20 day = new Day20 ();
18
18
day .printParts ();
19
- new com .sbaars .adventofcode .network .Submit ().submit (day .part1 (), 2015 , 20 , 1 );
19
+ new com .sbaars .adventofcode .network .Submit ().submit (day .part2 (), 2015 , 20 , 2 );
20
20
}
21
21
22
22
@ Override
@@ -30,7 +30,18 @@ public Object part1() {
30
30
31
31
@ Override
32
32
public Object part2 () {
33
- return 0 ; // Implement in next part
33
+ int houseNumber = 1 ;
34
+ while (getPresentsForHousePart2 (houseNumber ) < TARGET_PRESENTS ) {
35
+ houseNumber ++;
36
+ }
37
+ return houseNumber ;
38
+ }
39
+
40
+ private int getPresentsForHousePart2 (int houseNumber ) {
41
+ return getDivisors (houseNumber ).stream ()
42
+ .filter (elf -> houseNumber / elf <= 50 ) // Each Elf only visits 50 houses
43
+ .mapToInt (elf -> elf * 11 ) // Each Elf delivers 11 presents
44
+ .sum ();
34
45
}
35
46
36
47
private int getPresentsForHouse (int houseNumber ) {
@@ -41,15 +52,12 @@ private int getPresentsForHouse(int houseNumber) {
41
52
42
53
private Set <Integer > getDivisors (int number ) {
43
54
Set <Integer > divisors = new HashSet <>();
44
- int sqrt = (int ) Math .sqrt (number );
45
-
46
- for (int i = 1 ; i <= sqrt ; i ++) {
55
+ for (int i = 1 ; i <= Math .sqrt (number ); i ++) {
47
56
if (number % i == 0 ) {
48
57
divisors .add (i );
49
58
divisors .add (number / i );
50
59
}
51
60
}
52
-
53
61
return divisors ;
54
62
}
55
63
}
You can’t perform that action at this time.
0 commit comments