Skip to content

Commit f77677f

Browse files
committed
parallelize day 21 part 2, for funsies
1 parent 9233c8a commit f77677f

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

src/main/java/com/codefork/aoc2024/day21/Part02.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
public class Part02 extends Problem {
88

99
public String solve(Stream<String> data) {
10-
System.out.println("TODO: This takes ~1.5 minutes to run, needs to be optimized");
10+
System.out.println("TODO: This takes ~1 minute to run, needs to be optimized");
1111
return String.valueOf(ShipLock.calculateSumOfComplexities(data, 25));
1212
}
1313

src/main/java/com/codefork/aoc2024/day21/ShipLock.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,13 @@ record WithLength(PressSequence seq, long length) {
4343
for (var navigator : navigators) {
4444
var newPressSeqSet = new HashSet<PressSequence>();
4545
// one to many results
46-
for (var pressSeq : pressSeqs) {
47-
var possiblePresses = navigator.getPossiblePressSequences(pressSeq);
48-
newPressSeqSet.addAll(possiblePresses);
46+
47+
// parallelization on my laptop w/ 16 virtual cores cuts runtime by 1/3, from 83s to 57s
48+
var results = pressSeqs.parallelStream()
49+
.map(navigator::getPossiblePressSequences)
50+
.toList();
51+
for(var result : results) {
52+
newPressSeqSet.addAll(result);
4953
}
5054

5155
// calculate lengths just once, since it's a slightly expensive operation

0 commit comments

Comments
 (0)