Reformat stuff

This commit is contained in:
Natsu Kagami 2023-12-09 13:23:52 +01:00
parent 4f2f75e9b8
commit f0c4d30ee9
Signed by: nki
GPG key ID: 55A032EB38B49ADB
7 changed files with 18 additions and 31 deletions

View file

@ -1,2 +1,3 @@
version = "3.7.14"
runner.dialect = scala3
runner.dialect = scala3
maxColumn = 120

View file

@ -18,8 +18,8 @@ object Parser extends CommonParser:
"blue" ^^^ ((h: Hand) => h.copy(blue = num))
val hand = rep1sep(update, ",").map(_.foldRight(Hand(0, 0, 0))(_(_)))
val game = "Game" ~ num ~ ":" ~ repsep(hand, ";") ^^ {
case (_ ~ num ~ _ ~ hands) => Game(num, hands)
val game = "Game" ~ num ~ ":" ~ repsep(hand, ";") ^^ { case (_ ~ num ~ _ ~ hands) =>
Game(num, hands)
}
end Parser
@ -31,9 +31,7 @@ def part1 =
val games = getGames.toList
val res =
games
.filter(g =>
g.hands.forall(h => h.red <= 12 && h.green <= 13 && h.blue <= 14)
)
.filter(g => g.hands.forall(h => h.red <= 12 && h.green <= 13 && h.blue <= 14))
.map(_.id)
.sum
println(res)

View file

@ -25,17 +25,13 @@ def adjacent(x: Int, y: Int) =
def adjacentCells(x: Int, y: Int) =
adjacent(x, y)
.filter((x, y) =>
x >= 0 && x < board.length && y >= 0 && y < board(x).length
)
.filter((x, y) => x >= 0 && x < board.length && y >= 0 && y < board(x).length)
.map((x, y) => board(x)(y))
def part1 =
val numbersWithSyms = numbers
.filter((x, y, num) =>
(y until y + num.length()).exists(y =>
adjacentCells(x, y).exists(c => !c.isDigit && c != '.')
)
(y until y + num.length()).exists(y => adjacentCells(x, y).exists(c => !c.isDigit && c != '.'))
)
.map(v => BigInt(v._3))
.sum
@ -44,9 +40,7 @@ def part1 =
// Part 2
def adjacentNums(x: Int, y: Int) =
numbers.filter((nx, ny, n) =>
(x - nx).abs <= 1 && ny <= y + 1 && ny + n.length() >= y
)
numbers.filter((nx, ny, n) => (x - nx).abs <= 1 && ny <= y + 1 && ny + n.length() >= y)
def part2 =
val gears = board.toIterator.zipWithIndex

View file

@ -12,8 +12,8 @@ case class Card(id: Int, winning: List[Int], got: List[Int]):
object Parser extends CommonParser:
val nums = rep1(num)
val card = "Card " ~ num ~ ":" ~ nums ~ "|" ~ nums ^^ {
case (_ ~ id ~ _ ~ winning ~ _ ~ got) => Card(id, winning, got)
val card = "Card " ~ num ~ ":" ~ nums ~ "|" ~ nums ^^ { case (_ ~ id ~ _ ~ winning ~ _ ~ got) =>
Card(id, winning, got)
}
end Parser

View file

@ -7,8 +7,7 @@ import scala.collection.immutable.NumericRange.Exclusive
case class Conversion(source: Long, dest: Long, range: Long):
val gap = dest - source
def apply(input: Long) = if source <= input && input < source + range then
Some(dest + (input - source))
def apply(input: Long) = if source <= input && input < source + range then Some(dest + (input - source))
else None
def apply(r: LRange): (Option[LRange], Option[LRange]) =
@ -20,8 +19,7 @@ case class Conversion(source: Long, dest: Long, range: Long):
)
else None
val rest =
if r.`end` >= source + range then
Some((source + range max r.start) until r.`end`)
if r.`end` >= source + range then Some((source + range max r.start) until r.`end`)
else None
(overlap, rest)
@ -68,8 +66,8 @@ object Parser extends CommonParser:
val seeds = "seeds:" ~> nums
val mapName = """\w+""".r ~ "-to-" ~ """\w+""".r ~ "map" ^^ {
case (src ~ _ ~ dest ~ _) => (src, dest)
val mapName = """\w+""".r ~ "-to-" ~ """\w+""".r ~ "map" ^^ { case (src ~ _ ~ dest ~ _) =>
(src, dest)
}
val mapEntry = long ~ long ~ long ^^ { case (dest ~ src ~ range) =>
Conversion(src, dest, range)

View file

@ -16,8 +16,8 @@ object Parser extends CommonParser:
val instructions = rep(instruction)
val name = """[\dA-Z]{3}""".r
val node = name ~ "= (" ~ name ~ "," ~ name ~ ")" ^^ {
case (name ~ _ ~ a ~ _ ~ b ~ _) => Node(name, Array(a, b))
val node = name ~ "= (" ~ name ~ "," ~ name ~ ")" ^^ { case (name ~ _ ~ a ~ _ ~ b ~ _) =>
Node(name, Array(a, b))
}
// part 1
@ -83,9 +83,7 @@ def part2 =
traverse(start, toManuallySimulate) match
case Right(v) => println(v)
case Left(states) =>
val loops = loopInfos.map((before, loop) =>
loop.shiftBy(toManuallySimulate - before)
)
val loops = loopInfos.map((before, loop) => loop.shiftBy(toManuallySimulate - before))
val size = loops.foldLeft(1L)((v, loop) => lcm(v, loop.loopSize))
if loops.forall(l => l.goodPositions == Set(l.loopSize - 3))
then // dirty hack from input

View file

@ -28,9 +28,7 @@ def part2 =
println(
inputs
.map(
calculate(depth =>
(sum, ns) => sum + ns.head * (if depth % 2 == 0 then 1 else -1)
)
calculate(depth => (sum, ns) => sum + ns.head * (if depth % 2 == 0 then 1 else -1))
)
.sum
)