File tree Expand file tree Collapse file tree 2 files changed +8
-5
lines changed
main/java/com/github/saser/adventofcode/year2016/day09
test/java/com/github/saser/adventofcode/year2016/day09 Expand file tree Collapse file tree 2 files changed +8
-5
lines changed Original file line number Diff line number Diff line change @@ -18,15 +18,16 @@ private static Result solve(Reader r, int part) {
18
18
try {
19
19
var br = new BufferedReader (r );
20
20
var input = br .readLine ();
21
- return Result .ok (Long .toString (decompressedLength (input )));
21
+ var length = decompressedLength (input , part == 2 );
22
+ return Result .ok (Long .toString (length ));
22
23
} catch (Exception e ) {
23
24
e .printStackTrace ();
24
25
return Result .err (e .getMessage ());
25
26
}
26
27
}
27
28
28
- private static long decompressedLength (String s ) {
29
- var length = 0 ;
29
+ private static long decompressedLength (String s , boolean recursive ) {
30
+ var length = 0L ;
30
31
for (var i = 0 ; i < s .length (); i ++) {
31
32
var markerStart = s .indexOf ('(' , i );
32
33
if (markerStart == -1 ) {
@@ -38,7 +39,9 @@ private static long decompressedLength(String s) {
38
39
var marker = parseMarker (s .substring (markerStart + 1 , markerEnd ));
39
40
var dataStart = markerEnd + 1 ;
40
41
var dataEnd = markerEnd + marker [0 ];
41
- length += (dataEnd - dataStart + 1 ) * marker [1 ];
42
+ var data = s .substring (dataStart , dataEnd + 1 );
43
+ var dataLength = recursive ? decompressedLength (data , recursive ) : data .length ();
44
+ length += dataLength * marker [1 ];
42
45
i = dataEnd ;
43
46
}
44
47
return length ;
Original file line number Diff line number Diff line change @@ -111,7 +111,7 @@ public void part2Example4() {
111
111
@ Test
112
112
public void part2Actual () throws IOException {
113
113
try (var input = new FileReader ("inputs/2016/09" )) {
114
- var output = "" ;
114
+ var output = "11451628995 " ;
115
115
var result = Day09 .part2 (input );
116
116
Assert .assertEquals ("no error" , "" , result .error );
117
117
Assert .assertEquals ("correct output" , output , result .answer );
You can’t perform that action at this time.
0 commit comments