From 0664894ef20a87d8badcc54a6eba5500c056302a Mon Sep 17 00:00:00 2001 From: Anthony Cerruti Date: Sat, 7 Dec 2019 15:08:52 -0800 Subject: [PATCH] Day 7 part 1 (part 2 kinda stupid) --- aoc/src/main/scala/aoc/y2019/Day07.scala | 33 ++++++++++++++++++++++ aoc/src/main/scala/aoc/y2019/package.scala | 1 + 2 files changed, 34 insertions(+) create mode 100644 aoc/src/main/scala/aoc/y2019/Day07.scala 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, ) }