Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f77677f

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /