Skip to content

Instantly share code, notes, and snippets.

@cyberzac
Created December 3, 2022 20:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cyberzac/dda360711845fe097dcb0d0025c062e1 to your computer and use it in GitHub Desktop.
Save cyberzac/dda360711845fe097dcb0d0025c062e1 to your computer and use it in GitHub Desktop.
AdventOfCode 2022 Day 3
object Day3 extends Day :
def toPrio(c:Char):Int = c match {
case c if c > 'Z' => c - '`'
case c => c - '@' + 26
}
def part1(input:Iterator[String]) = input
.map(r => r.splitAt(r.length/2))
.map { case (f, s) => f.toSet.intersect(s.toSet).head }
.map(toPrio)
.sum
def part2(input:Iterator[String]) = input
.sliding(3,3)
.map(_.foldLeft(Set.empty[Char]) {
case (common, sack) if common.isEmpty => sack.toSet
case (common, sack) => common.intersect(sack.toSet)
}.head
)
.map(toPrio)
.sum
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment