8000 Optimize 2018 day 5 part 2 by doing pre-reactions · sim642/adventofcode@4cb4289 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4cb4289

Browse files
committed
Optimize 2018 day 5 part 2 by doing pre-reactions
1 parent c1bed20 commit 4cb4289

File tree

1 file changed

+3
-2
lines changed
  • src/main/scala/eu/sim642/adventofcode2018

1 file changed

+3
-2
lines changed

src/main/scala/eu/sim642/adventofcode2018/Day5.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ object Day5 {
2222
def reactPolymerLength(s: String): Int = reactPolymer(s).length
2323

2424
def bestPolymerLength(s: String): Int = {
25-
val lowerUnits = s.toLowerCase.toSet
26-
lowerUnits.map(lowerUnit => s.filterNot(_.toLower == lowerUnit)).map(reactPolymerLength).min
25+
val preReacted = reactPolymer(s) // pre-react units which get reacted in all cases anyway, 5× shorter string used every time
26+
val lowerUnits = preReacted.toLowerCase.toSet
27+
lowerUnits.map(lowerUnit => preReacted.filterNot(_.toLower == lowerUnit)).map(reactPolymerLength).min
2728
}
2829

2930

0 commit comments

Comments
 (0)
0