Skip to content

Commit 299e3e7

Browse files
authored
Create Day13.java
1 parent 50d2a71 commit 299e3e7

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

Day13.java

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
public class Day13 {
2+
3+
static int part1(int[] depths, int[] range) {
4+
int[] scanner = new int[depths.length];
5+
6+
int severity = 0;
7+
int i = 0;
8+
int time = 0;
9+
while (i < depths.length) {
10+
if (time == depths[i]) {
11+
if (scanner[i] == 0) {
12+
severity += depths[i] * range[i];
13+
}
14+
i++;
15+
}
16+
17+
// update scanner positions
18+
for (int j = 0; j < scanner.length; j++) {
19+
if (scanner[j] == range[j] - 1) {
20+
scanner[j] *= -1;
21+
}
22+
scanner[j]++;
23+
}
24+
25+
time++;
26+
}
27+
28+
return severity;
29+
}
30+
31+
static long part2(int[] depths, int[] range) {
32+
long i = 0;
33+
while (!part2(i, depths, range)) {
34+
i++;
35+
}
36+
return i;
37+
}
38+
39+
static boolean part2(long offset, int[] depths, int[] range) {
40+
int i = 0;
41+
long time = offset;
42+
while (i < depths.length) {
43+
if (time == depths[i] + offset) {
44+
if (time % (2 * range[i] - 2) == 0) {
45+
return false;
46+
}
47+
i++;
48+
}
49+
50+
time++;
51+
}
52+
53+
return true;
54+
}
55+
56+
public static void main(String[] args) {
57+
int[] depths = { 0, 1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48,
58+
50, 52, 54, 58, 60, 62, 64, 66, 68, 72, 74, 76, 86, 88, 92, 94, 96, 98 };
59+
int[] range = { 4, 2, 3, 4, 8, 5, 6, 6, 10, 8, 6, 9, 8, 6, 8, 8, 12, 12, 12, 12, 10, 12, 12, 14, 8, 14, 12, 14, 14,
60+
14, 12, 14, 14, 12, 12, 14, 18, 17, 14, 20, 14, 14, 18, 18 };
61+
62+
// depths = new int[] { 0, 1, 4, 6 };
63+
// range = new int[] { 3, 2, 4, 4 };
64+
65+
System.out.println(part1(depths, range));
66+
System.out.println(part2(depths, range));
67+
}
68+
}

0 commit comments

Comments
 (0)