Skip to content

Commit 76b309b

Browse files
committed
Solved task for day 2 part 2
1 parent 7e0aaeb commit 76b309b

File tree

4 files changed

+45
-5
lines changed

4 files changed

+45
-5
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.1.3'
7+
version '0.1.4'
88

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

day02/src/main/java/de/havox_design/aoc2015/day02/Dimensions.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,20 @@ public List<Integer> getSides() {
2525
return data;
2626
}
2727

28+
public List<Integer> getBothSmallerLengths() {
29+
ArrayList<Integer> dimensions = new ArrayList<>(List.of(length, width, height));
30+
int maximum = dimensions.stream().max(Integer::compareTo).orElseThrow(() -> new IllegalStateException("This should never happen..."));
31+
32+
for (int i = 0; i < dimensions.size(); i++) {
33+
if (dimensions.get(i) == maximum) {
34+
dimensions.remove(i);
35+
break;
36+
}
37+
}
38+
39+
return dimensions;
40+
}
41+
2842
public static Dimensions getForDataRow(String dataRow) {
2943
if (dataRow == null || dataRow.isEmpty()) {
3044
throw new IllegalArgumentException("Expected data row to have format of LxWxH with L=length, W=width, H=height.");

day02/src/main/java/de/havox_design/aoc2015/day02/WrappingPaper.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,19 @@ public int solvePart1() {
3838
}
3939

4040
public int solvePart2() {
41-
return 0;
41+
int amount = 0;
42+
43+
for (String dataRow : input) {
44+
Dimensions current = parseDimensions(dataRow);
45+
46+
for (int length : current.getBothSmallerLengths()) {
47+
amount += 2 * length;
48+
}
49+
50+
amount += current.length() * current.width() * current.height();
51+
}
52+
53+
return amount;
4254
}
4355

4456
private Dimensions parseDimensions(String dataRow) {

day02/src/test/java/de/havox_design/aoc2015/day02/Day02Test.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,23 @@ void testPart1(String fileName, int expectedSquareFoots) {
2424

2525
private static Stream<Arguments> getDataForPart1() {
2626
return Stream.of(
27-
Arguments.of("part1sample1.txt", 58),
28-
Arguments.of("part1sample2.txt", 43),
29-
Arguments.of("part1sample3.txt", 101)
27+
Arguments.of("sample1.txt", 58),
28+
Arguments.of("sample2.txt", 43),
29+
Arguments.of("sample3.txt", 101)
30+
);
31+
}
32+
33+
@ParameterizedTest
34+
@MethodSource("getDataForPart2")
35+
void testPart2(String fileName, int expectedLengthOfRibbon) {
36+
Assertions.assertEquals(expectedLengthOfRibbon, WrappingPaper.solvePart2(fileName));
37+
}
38+
39+
private static Stream<Arguments> getDataForPart2() {
40+
return Stream.of(
41+
Arguments.of("sample1.txt", 34),
42+
Arguments.of("sample2.txt", 14),
43+
Arguments.of("sample3.txt", 48)
3044
);
3145
}
3246
}

0 commit comments

Comments
 (0)