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() {
1616 public static void main (String [] args ) {
1717 Day20 day = new Day20 ();
1818 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 );
2020 }
2121
2222 @ Override
@@ -30,7 +30,18 @@ public Object part1() {
3030
3131 @ Override
3232 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 ();
3445 }
3546
3647 private int getPresentsForHouse (int houseNumber ) {
@@ -41,15 +52,12 @@ private int getPresentsForHouse(int houseNumber) {
4152
4253 private Set <Integer > getDivisors (int number ) {
4354 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 ++) {
4756 if (number % i == 0 ) {
4857 divisors .add (i );
4958 divisors .add (number / i );
5059 }
5160 }
52-
5361 return divisors ;
5462 }
5563}
You can’t perform that action at this time.
0 commit comments