From a7e0e74feeda2aa4c1873314b28fae2bff6aace2 Mon Sep 17 00:00:00 2001 From: Araozu Date: Tue, 31 Oct 2023 21:14:53 -0500 Subject: [PATCH] day 1 part 2 --- src/main/scala/Day01.scala | 29 +++++++++++++++++++++++++++-- src/main/scala/Main.scala | 2 ++ src/main/scala/Solution.scala | 7 +++++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/main/scala/Day01.scala b/src/main/scala/Day01.scala index b804f1c..dd26e44 100644 --- a/src/main/scala/Day01.scala +++ b/src/main/scala/Day01.scala @@ -22,7 +22,32 @@ object Day01 extends Solution: current_sum = 0 - max_calories_amount.toString() + "part 1: " + max_calories_amount.toString() override def part_02() = - "part 2 :O" + val file = this.read_input("01") match + case Success(f) => f + case Failure(ex) => + return "Error opening file: " + ex.getMessage() + + var (max1, max2, max3) = (0, 0, 0) + var current_sum = 0 + + for line <- file.getLines() do + Try(line.toInt).toOption match + case Some(value) => current_sum += value + case None => + if current_sum > max1 then + max3 = max2 + max2 = max1 + max1 = current_sum + else if current_sum > max2 then + max3 = max2 + max2 = current_sum + else if current_sum > max3 then + max3 = current_sum + + current_sum = 0 + + "part 2: " + (max1 + max2 + max3).toString() + diff --git a/src/main/scala/Main.scala b/src/main/scala/Main.scala index 0cdb6da..c9a7c82 100644 --- a/src/main/scala/Main.scala +++ b/src/main/scala/Main.scala @@ -5,4 +5,6 @@ import scala.util.Random @main def hello: Unit = println("Advent of code 2022 with Scala") println(Day01.part_01()) + println(Day01.part_02()) + diff --git a/src/main/scala/Solution.scala b/src/main/scala/Solution.scala index 846ea84..67ca63b 100644 --- a/src/main/scala/Solution.scala +++ b/src/main/scala/Solution.scala @@ -18,4 +18,11 @@ trait Solution: catch case ex: java.io.FileNotFoundException => Failure(ex) + + def read_test_input(day: String): Try[BufferedSource] = + try + Success(Source.fromFile(s"./inputs/day$day.test.txt")) + catch + case ex: java.io.FileNotFoundException => + Failure(ex)