diff --git a/aoc/src/main/scala/aoc/Main.scala b/aoc/src/main/scala/aoc/Main.scala index 9330d0d..2e0cc29 100644 --- a/aoc/src/main/scala/aoc/Main.scala +++ b/aoc/src/main/scala/aoc/Main.scala @@ -7,6 +7,7 @@ object Main { val years = Map( "2016" -> y2016.!, "2017" -> y2017.!, + "2018" -> y2018.!, ) def main(args: Array[String]): Unit = { diff --git a/aoc/src/main/scala/aoc/package.scala b/aoc/src/main/scala/aoc/package.scala index 2a8be86..22f1f01 100644 --- a/aoc/src/main/scala/aoc/package.scala +++ b/aoc/src/main/scala/aoc/package.scala @@ -22,4 +22,12 @@ package object aoc { } + def uniquePrefix[A](as: Stream[A]): Stream[A] = { + def go(as: Stream[A], seen: Set[A]): Stream[A] = as match { + case h #:: t if !seen(h) => h #:: go(t, seen + h) + case _ => Stream.empty[A] + } + go(as, Set.empty) + } + } diff --git a/aoc/src/main/scala/aoc/y2017/Day06.scala b/aoc/src/main/scala/aoc/y2017/Day06.scala index c42f14f..d0df7a3 100644 --- a/aoc/src/main/scala/aoc/y2017/Day06.scala +++ b/aoc/src/main/scala/aoc/y2017/Day06.scala @@ -4,14 +4,6 @@ import aoc._ object Day06 extends Day { - def uniquePrefix[A](as: Stream[A]): Stream[A] = { - def go(as: Stream[A], seen: Set[A]): Stream[A] = as match { - case h #:: t if !seen(h) => h #:: go(t, seen + h) - case _ => Stream.empty[A] - } - go(as, Set.empty) - } - case class State(blocks: List[Int]) { def step: State = { diff --git a/aoc/src/main/scala/aoc/y2018/Day01.scala b/aoc/src/main/scala/aoc/y2018/Day01.scala new file mode 100644 index 0000000..acb6bf4 --- /dev/null +++ b/aoc/src/main/scala/aoc/y2018/Day01.scala @@ -0,0 +1,24 @@ +package aoc.y2018 + +import aoc._ + +object Day01 extends Day { + + override def part1(input: String): String = { + input.lines.map(_.toInt).sum.toString + } + + override def part2(input: String): String = { + println(input.lines.size) + val i: List[Int] = input.lines.map(_.toInt).toList + val inet = i.zipWithIndex.map { + case (f, index) => f + i.take(index).sum + } + val net = i.sum + val fcs = 0 #:: Stream.iterate(inet)(cl => cl.map(_ + net)).flatten + val us = uniquePrefix(fcs) + val nf = fcs(us.size) + nf.toString + } + +} diff --git a/aoc/src/main/scala/aoc/y2018/package.scala b/aoc/src/main/scala/aoc/y2018/package.scala new file mode 100644 index 0000000..16ab3ef --- /dev/null +++ b/aoc/src/main/scala/aoc/y2018/package.scala @@ -0,0 +1,9 @@ +package aoc + +package object y2018 extends Year { + + override def days: Map[String, Day] = Map( + "1" -> Day01 + ) + +}