diff --git a/src/main/scala/Day03.scala b/src/main/scala/Day03.scala new file mode 100644 index 0000000..c5e549e --- /dev/null +++ b/src/main/scala/Day03.scala @@ -0,0 +1,40 @@ +import scala.util.Success +import scala.util.Failure +import scala.util.boundary + + +object Day03 extends Solution: + override def part_01() = + val file = read_input("03") match + case Success(f) => f + case Failure(ex) => + return "Error opening file: " + ex.getMessage() + + var sum = 0 + + for line <- file.getLines() do + val char_count = line.length() + val first_segment = line.slice(0, char_count / 2) + val second_segment = line.slice(char_count / 2, char_count) + + val set = first_segment.toList.toSet + val res_char = second_segment.toCharArray().find((char) => set.contains(char)) match + case Some(c) => c + case None => + return "Error: Input didn't have a repeating character" + + sum += char_to_value(res_char) + + + s"part 1: $sum" + + override def part_02() = "" + + + private def char_to_value(c: Char): Int = + if c >= 'a' && c <= 'z' then c.toInt - 96 + else if c >= 'A' && c <= 'Z' then c.toInt - 64 + 26 + else + println(s"fed an invalid character: $c") + -1 + \ No newline at end of file diff --git a/src/main/scala/Main.scala b/src/main/scala/Main.scala index efafd1d..b567513 100644 --- a/src/main/scala/Main.scala +++ b/src/main/scala/Main.scala @@ -4,5 +4,5 @@ import scala.util.Random // Number guessing game @main def hello: Unit = println("Advent of code 2022 with Scala") - println(Day02.part_01()) - println(Day02.part_02()) + println(Day03.part_01()) + println(Day03.part_02())