diff --git a/day1/part1.scala b/day1/part1.scala new file mode 100644 index 0000000..ac5496f --- /dev/null +++ b/day1/part1.scala @@ -0,0 +1,12 @@ +/** + * Usage: scala part1.scala < input + */ + +import scala.io.StdIn +import scala.collection.Iterator + +println(Iterator + .continually(StdIn.readLine) + .takeWhile(_ != null) + .map(Integer.parseInt) + .sum) diff --git a/day1/part2.scala b/day1/part2.scala new file mode 100644 index 0000000..bab57ee --- /dev/null +++ b/day1/part2.scala @@ -0,0 +1,23 @@ +/** + * Usage: scala part2.scala < input + */ + +import scala.io.StdIn +import scala.collection.Iterator + +val items = Stream + .continually(StdIn.readLine) + .takeWhile(_ != null) + .map(Integer.parseInt) + .toList + +println( +Stream + .continually(items.toStream) + .flatten + .scanLeft(0)(_ + _) + .scanLeft(Map.empty[Int, Int]){case (acc, item) => acc + (item -> (acc.getOrElse(item, 0) + 1)) } + .filter(_.count(_._2 == 2) > 0) + .map(_.maxBy(_._2)) + .head +)