Skip to content

Commit 491bab1

Browse files
committed
feat: Event 2025 day 3
1 parent f706393 commit 491bab1

File tree

1 file changed

+87
-0
lines changed
  • core/src/main/java/com/vuryss/aoc/solutions/event2025

1 file changed

+87
-0
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package com.vuryss.aoc.solutions.event2025;
2+
3+
import com.vuryss.aoc.solutions.SolutionInterface;
4+
5+
import java.lang.Override;
6+
import java.lang.String;
7+
import java.lang.SuppressWarnings;
8+
import java.util.Map;
9+
10+
@SuppressWarnings("unused")
11+
public class Day3 implements SolutionInterface {
12+
@Override
13+
public Map<String, String> part1Tests() {
14+
return Map.of(
15+
"""
16+
987654321111111
17+
811111111111119
18+
234234234234278
19+
818181911112111
20+
""",
21+
"357"
22+
);
23+
}
24+
25+
@Override
26+
public Map<String, String> part2Tests() {
27+
return Map.of(
28+
"""
29+
987654321111111
30+
811111111111119
31+
234234234234278
32+
818181911112111
33+
""",
34+
"3121910778619"
35+
);
36+
}
37+
38+
@Override
39+
public String part1Solution(String input, boolean isTest) {
40+
var lines = input.trim().split("\n");
41+
var sum = 0L;
42+
43+
for (var line: lines) {
44+
sum += findMaximumJoltage(line, 2);
45+
}
46+
47+
return String.valueOf(sum);
48+
}
49+
50+
@Override
51+
public String part2Solution(String input, boolean isTest) {
52+
var lines = input.trim().split("\n");
53+
var sum = 0L;
54+
55+
for (var line: lines) {
56+
sum += findMaximumJoltage(line, 12);
57+
}
58+
59+
return String.valueOf(sum);
60+
}
61+
62+
private long findMaximumJoltage(String bank, int size) {
63+
var batteries = bank.toCharArray();
64+
char[] maxBatteryCombination = new char[size];
65+
int foundBatteries = 0, position = 0;
66+
67+
while (foundBatteries < size) {
68+
int n = 0;
69+
int leftBatteries = size - foundBatteries;
70+
71+
for (var i = position; i < batteries.length - leftBatteries + 1; i++) {
72+
if (batteries[i] - '0' > n) {
73+
n = batteries[i] - '0';
74+
position = i + 1;
75+
}
76+
77+
if (n == 9) {
78+
break;
79+
}
80+
}
81+
82+
maxBatteryCombination[foundBatteries++] = (char) (n + '0');
83+
}
84+
85+
return Long.parseLong(new String(maxBatteryCombination));
86+
}
87+
}

0 commit comments

Comments
 (0)