Skip to content

Commit 49987a8

Browse files
aoc 2024 tooling and day 1
1 parent f3d9a59 commit 49987a8

File tree

5 files changed

+97
-5
lines changed

5 files changed

+97
-5
lines changed

src/main/java/dev/jacobandersen/codechallenges/challenge/adventofcode/AdventOfCodeBootstrap.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import dev.jacobandersen.codechallenges.challenge.adventofcode.year2020.Year2020;
55
import dev.jacobandersen.codechallenges.challenge.adventofcode.year2022.Year2022;
66
import dev.jacobandersen.codechallenges.challenge.adventofcode.year2023.Year2023;
7+
import dev.jacobandersen.codechallenges.challenge.adventofcode.year2024.Year2024;
78
import dev.jacobandersen.codechallenges.util.CombinatoricsUtil;
89

910
import java.util.List;
@@ -23,9 +24,10 @@ public void run() {
2324
new Dummy().m();
2425
}
2526

26-
Year2015.getDays().forEach(Day::run);
27-
Year2020.getDays().forEach(Day::run);
28-
Year2022.getDays().forEach(Day::run);
29-
Year2023.getDays().forEach(Day::run);
27+
// Year2015.getDays().forEach(Day::run);
28+
// Year2020.getDays().forEach(Day::run);
29+
// Year2022.getDays().forEach(Day::run);
30+
// Year2023.getDays().forEach(Day::run);
31+
Year2024.getDays().forEach(Day::run);
3032
}
3133
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package dev.jacobandersen.codechallenges.challenge.adventofcode.year2024;
2+
3+
import dev.jacobandersen.codechallenges.challenge.adventofcode.Day;
4+
import dev.jacobandersen.codechallenges.challenge.adventofcode.year2024.day1.Day1;
5+
6+
import java.util.List;
7+
8+
public class Year2024 {
9+
public static List<Day> getDays() {
10+
return List.of(
11+
new Day1()
12+
);
13+
}
14+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package dev.jacobandersen.codechallenges.challenge.adventofcode.year2024.day1;
2+
3+
import dev.jacobandersen.codechallenges.challenge.adventofcode.Day;
4+
import dev.jacobandersen.codechallenges.util.Pair;
5+
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
import java.util.Objects;
9+
10+
public class Day1 extends Day {
11+
public Day1() {
12+
super(2024, 1, "Historian Hysteria");
13+
}
14+
15+
private Pair<List<Integer>, List<Integer>> getLists() {
16+
final List<Integer> a = new ArrayList<>(), b = new ArrayList<>();
17+
18+
getInputLinesStreamNoBlanks()
19+
.map(line -> line.replaceAll(" +", " ").split(" "))
20+
.map(arr -> new Integer[] { Integer.parseInt(arr[0]), Integer.parseInt(arr[1]) })
21+
.forEach(arr -> {
22+
a.add(arr[0]);
23+
b.add(arr[1]);
24+
});
25+
26+
return new Pair<>(a, b);
27+
}
28+
29+
@Override
30+
public String partOne() {
31+
final Pair<List<Integer>, List<Integer>> lists = getLists();
32+
33+
lists.first().sort(Integer::compareTo);
34+
lists.second().sort(Integer::compareTo);
35+
36+
final List<Integer> differences = new ArrayList<>();
37+
for (int i = 0; i < lists.first().size() && i < lists.second().size(); i++) {
38+
differences.add(Math.abs(lists.first().get(i) - lists.second().get(i)));
39+
}
40+
41+
return String.valueOf(differences.stream().mapToInt(Integer::intValue).sum());
42+
}
43+
44+
@Override
45+
public String partTwo() {
46+
final Pair<List<Integer>, List<Integer>> lists = getLists();
47+
48+
return String.valueOf(
49+
lists.first().stream()
50+
.mapToLong(leftNum ->
51+
leftNum * lists.second()
52+
.stream()
53+
.filter(rightNum -> Objects.equals(rightNum, leftNum))
54+
.count()).sum()
55+
);
56+
}
57+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package dev.jacobandersen.codechallenges.util;
2+
3+
public class Pair<T,R> {
4+
private final T first;
5+
private final R second;
6+
7+
public Pair(T first, R second) {
8+
this.first = first;
9+
this.second = second;
10+
}
11+
12+
public T first() {
13+
return first;
14+
}
15+
16+
public R second() {
17+
return second;
18+
}
19+
}

src/main/resources/inputdata

0 commit comments

Comments
 (0)