Skip to content

Commit 739416e

Browse files
committed
Solved day 17 part 1
1 parent 226f827 commit 739416e

File tree

5 files changed

+83
-3
lines changed

5 files changed

+83
-3
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44

55
// project meta data
66
group 'de.havox_design.aoc2015'
7-
version '0.16.1'
7+
version '0.16.2'
88

99
// Switch to gradle "all" distribution.
1010
wrapper {

day17/src/main/java/de/havox_design/aoc2015/day17/MainClass.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public class MainClass {
66
private static final Logger LOGGER = Logger.getLogger(MainClass.class.getName());
77

88
public static void main(String[] args) {
9-
LOGGER.info("Solution 1: 13");
10-
LOGGER.info("Solution 2: 23");
9+
LOGGER.info(() -> "Solution 1: " + NotEnoughEggnod.solvePart1("day17.txt"));
10+
LOGGER.info(() -> "Solution 2: " + NotEnoughEggnod.solvePart2("day17.txt"));
1111
}
1212
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package de.havox_design.aoc2015.day17;
2+
3+
import de.havox_design.aoc2015.utils.DataReader;
4+
5+
import java.util.List;
6+
7+
public class NotEnoughEggnod {
8+
private final List<Integer> input;
9+
10+
public NotEnoughEggnod(String fileName) {
11+
input = readData(fileName)
12+
.stream()
13+
.map(Integer::parseInt)
14+
.toList();
15+
}
16+
17+
public static int solvePart1(String fileName) {
18+
NotEnoughEggnod instance = new NotEnoughEggnod(fileName);
19+
return instance.solvePart1();
20+
}
21+
22+
protected static int countCombinations(String fileName, int amountOfEggnod) {
23+
NotEnoughEggnod instance = new NotEnoughEggnod(fileName);
24+
return instance.countWays(instance.input, 0, amountOfEggnod, 0);
25+
}
26+
27+
public static int solvePart2(String fileName) {
28+
NotEnoughEggnod instance = new NotEnoughEggnod(fileName);
29+
return instance.solvePart2();
30+
}
31+
32+
public int solvePart1() {
33+
return countWays(input, 0, 150, 0);
34+
}
35+
36+
public int solvePart2() {
37+
return 0;
38+
}
39+
40+
private int countWays(List<Integer> containers, int startIndex, int target, int countSoFar) {
41+
if (target == 0) {
42+
return 1;
43+
} else if (target < 0) {
44+
return 0;
45+
} else {
46+
int count = countSoFar;
47+
for (int i = startIndex; i < containers.size(); ++i) {
48+
count += countWays(containers, i + 1, target - containers.get(i), countSoFar);
49+
}
50+
return count;
51+
}
52+
}
53+
54+
private List<String> readData(String fileName) {
55+
return DataReader.readData(fileName, MainClass.class);
56+
}
57+
}

day17/src/test/java/de/havox_design/aoc2015/day17/Day17Test.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
package de.havox_design.aoc2015.day17;
22

3+
import org.junit.jupiter.api.Assertions;
34
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.params.ParameterizedTest;
6+
import org.junit.jupiter.params.provider.Arguments;
7+
import org.junit.jupiter.params.provider.MethodSource;
8+
9+
import java.util.stream.Stream;
410

511
class Day17Test {
612

@@ -9,4 +15,16 @@ class Day17Test {
915
void testMainClass() {
1016
MainClass.main(new String[0]);
1117
}
18+
19+
@ParameterizedTest
20+
@MethodSource("getDataForPart1")
21+
void testPart1(String fileName, int expectedNumberOfCombinations) {
22+
Assertions.assertEquals(expectedNumberOfCombinations, NotEnoughEggnod.countCombinations(fileName, 25));
23+
}
24+
25+
private static Stream<Arguments> getDataForPart1() {
26+
return Stream.of(
27+
Arguments.of("part1sample.txt", 4)
28+
);
29+
}
1230
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
20
2+
15
3+
10
4+
5
5+
5

0 commit comments

Comments
 (0)