File tree Expand file tree Collapse file tree 2 files changed +43
-2
lines changed
main/java/com/github/saser/adventofcode/year2016/day18
test/java/com/github/saser/adventofcode/year2016/day18 Expand file tree Collapse file tree 2 files changed +43
-2
lines changed Original file line number Diff line number Diff line change 1
1
package com .github .saser .adventofcode .year2016 .day18 ;
2
2
3
+ import java .io .BufferedReader ;
3
4
import java .io .Reader ;
5
+ import java .util .stream .Stream ;
4
6
5
7
import com .github .saser .adventofcode .Result ;
6
8
@@ -14,6 +16,45 @@ public static Result part2(Reader r) {
14
16
}
15
17
16
18
private static Result solve (Reader r , int part ) {
17
- return Result .err ("not implemented yet" );
19
+ var state = Day18 .parse (r );
20
+ var states = Stream .iterate (state , Day18 ::next );
21
+ var sum = states
22
+ .limit (40 )
23
+ .mapToInt (Day18 ::count )
24
+ .sum ();
25
+ return Result .ok (Integer .toString (sum ));
26
+ }
27
+
28
+ private static boolean [] parse (Reader r ) {
29
+ var line = new BufferedReader (r )
30
+ .lines ()
31
+ .findFirst ()
32
+ .get ()
33
+ .toCharArray ();
34
+ var state = new boolean [line .length ];
35
+ for (var i = 0 ; i < state .length ; i ++) {
36
+ state [i ] = line [i ] == '^' ;
37
+ }
38
+ return state ;
39
+ }
40
+
41
+ private static int count (boolean [] state ) {
42
+ var count = 0 ;
43
+ for (var trap : state ) {
44
+ if (!trap ) {
45
+ count ++;
46
+ }
47
+ }
48
+ return count ;
49
+ }
50
+
51
+ private static boolean [] next (boolean [] state ) {
52
+ var next = new boolean [state .length ];
53
+ for (var i = 0 ; i < state .length ; i ++) {
54
+ var left = i != 0 && state [i - 1 ];
55
+ var right = i != state .length - 1 && state [i + 1 ];
56
+ next [i ] = !right == left ;
57
+ }
58
+ return next ;
18
59
}
19
60
}
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ public class Day18Test {
10
10
@ Test
11
11
public void part1Actual () throws IOException {
12
12
try (var input = new FileReader ("inputs/2016/18" )) {
13
- var output = "" ;
13
+ var output = "2016 " ;
14
14
var result = Day18 .part1 (input );
15
15
Assert .assertEquals ("no error" , "" , result .error );
16
16
Assert .assertEquals ("correct output" , output , result .answer );
You can’t perform that action at this time.
0 commit comments