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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy