diff --git a/aoc/src/main/scala/aoc/y2019/Day07.scala b/aoc/src/main/scala/aoc/y2019/Day07.scala new file mode 100644 index 0000000..155f539 --- /dev/null +++ b/aoc/src/main/scala/aoc/y2019/Day07.scala @@ -0,0 +1,33 @@ +package aoc.y2019 + +import aoc.Day + +import scala.annotation.tailrec + +object Day07 extends Day { + + @tailrec def runAmplifiers(machine: Intcode.Machine, order: IndexedSeq[Int], input: Int = 0): Int = { + if(order.isEmpty) { + input + } else { + val firstInput = order.head + val secondInput = input + val runAmplifier = for { + _ <- Intcode.input(firstInput) + _ <- Intcode.input(secondInput) + ran <- Intcode.run + } yield ran + val output = runAmplifier.runS(machine).value.output.head + runAmplifiers(machine, order.tail, output) + } + } + + override def part1(input: String): String = { + val memory = input.split(",").toVector.map(_.toInt) + val initialState = Intcode.Machine(memory) + val maximumSignal = (0 to 4).permutations.map(runAmplifiers(initialState, _)).max + maximumSignal.toString + } + + override def part2(input: String): String = ??? +} diff --git a/aoc/src/main/scala/aoc/y2019/package.scala b/aoc/src/main/scala/aoc/y2019/package.scala index a525f72..5f9e29f 100644 --- a/aoc/src/main/scala/aoc/y2019/package.scala +++ b/aoc/src/main/scala/aoc/y2019/package.scala @@ -9,6 +9,7 @@ package object y2019 extends Year { "4" -> Day04, "5" -> Day05, "6" -> Day06, + "7" -> Day07, ) }