Adding day 18 p1 and 19 p1 + creating folder 2018

This commit is contained in:
Xavier Morel
2019-01-17 16:40:36 +01:00
parent 5fb50b11af
commit 5723d21ecb
32 changed files with 121 additions and 0 deletions

35
2018/day3/part2.scala Normal file
View File

@@ -0,0 +1,35 @@
import scala.io.StdIn.readLine
case class Claim(id: Int, x: Int, y: Int, w: Int, h: Int) {
val xe: Int = x + (w - 1)
val ye: Int = y + (h - 1)
def getSquares: Seq[((Int, Int), Int)] =
for {
xi <- x to xe
yi <- y to ye
} yield ((xi, yi) -> id)
}
object Claim {
def apply(input: String): Claim =
"#(\\d+) @ (\\d+),(\\d+): (\\d+)x(\\d+)".r.findFirstMatchIn(input).map {
m => Claim(m.group(1).toInt, m.group(2).toInt, m.group(3).toInt, m.group(4).toInt, m.group(5).toInt)
}.get
}
val claims = Iterator
.continually(readLine)
.takeWhile(_ != null)
.map(Claim.apply)
.toList
val fabric = claims
.flatMap(_.getSquares)
.foldLeft(Map.empty[(Int, Int), Set[Int]]) {
(acc, sq) => acc + (sq._1 -> (acc.getOrElse(sq._1, Set.empty[Int]) + sq._2))
}
val overlapping = fabric.filter(_._2.size > 1).values.flatten.toSet
println(claims.filterNot(c => overlapping.contains(c.id)))