From 96927642c1b4e5c52db7e7afc6f6859146eae111 Mon Sep 17 00:00:00 2001 From: kamoshi <18511281+kamoshi@users.noreply.github.com> Date: Fri, 6 Dec 2019 22:31:15 +0100 Subject: [PATCH] Add files via upload --- 2019/Scala/day02/Day2.scala | 34 +++++++++++++++++++++++++++ 2019/Scala/day02/Main.scala | 23 ++++++++++++++++++ 2019/Scala/day02/worksheet2.sc | 43 ++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 2019/Scala/day02/Day2.scala create mode 100644 2019/Scala/day02/Main.scala create mode 100644 2019/Scala/day02/worksheet2.sc diff --git a/2019/Scala/day02/Day2.scala b/2019/Scala/day02/Day2.scala new file mode 100644 index 0000000..5edc8e2 --- /dev/null +++ b/2019/Scala/day02/Day2.scala @@ -0,0 +1,34 @@ +package day02 + +class Day2 { + + /** Find solution for part1 */ + def solveP1(arr: Array[Int]): Int = + { + var i = 0 + while (arr(i) == 1 || arr(i) == 2) + { + arr(i) match { + case 1 => arr(arr(i + 3)) = arr(arr(i + 1)) + arr(arr(i + 2)); i += 4 + case 2 => arr(arr(i + 3)) = arr(arr(i + 1)) * arr(arr(i + 2)); i += 4 + case _ => () + } + } + arr(0) + } + + /** Find fuel needed and recursive fuel */ + def solveP2(arr:Array[Int]):(Int, Int) = + { + var tuple = (0, 0) + for (i <- 0 to 99; j <- 0 to 99) + { + val copy = arr.clone() + copy(1) = i + copy(2) = j + if (solveP1(copy) == 19690720) tuple = (i, j) + } + tuple + } + +} diff --git a/2019/Scala/day02/Main.scala b/2019/Scala/day02/Main.scala new file mode 100644 index 0000000..9808693 --- /dev/null +++ b/2019/Scala/day02/Main.scala @@ -0,0 +1,23 @@ +package day02 + +import kamlib.{Reader, Wrapper} + +object Main +{ + /** MAIN */ + def main(args: Array[String]): Unit = + { + + val solution: Day2 = new Day2 + val input: Array[Int] = Reader.readString("/input1.txt").split("\\D+").map(x => x.toInt) + val copy: Array[Int] = input.clone() + copy(1) = 12 + copy(2) = 2 + + println("Part 1") + Wrapper(solution.solveP1(input)).print() + println("Part 2") + Wrapper(solution.solveP2(input)).print() + } + +} diff --git a/2019/Scala/day02/worksheet2.sc b/2019/Scala/day02/worksheet2.sc new file mode 100644 index 0000000..a059f1b --- /dev/null +++ b/2019/Scala/day02/worksheet2.sc @@ -0,0 +1,43 @@ +import scala.io.Source + +var original = Source.fromFile(getClass.getResource("/input2.txt").getFile).mkString.split("\\D+").map(x => x.toInt) +original(1) = 12 +original(2) = 2 +var copy1 = original.clone() + +// 1 +def tapeTraversal1(arr:Array[Int]):Int = +{ + var i = 0 + while (arr(i) == 1 || arr(i) == 2) + { + arr(i) match { + case 1 => arr(arr(i + 3)) = arr(arr(i + 1)) + arr(arr(i + 2)); i += 4 + case 2 => arr(arr(i + 3)) = arr(arr(i + 1)) * arr(arr(i + 2)); i += 4 + case _ => () + } + } + arr(0) +} +val result1 = tapeTraversal1(copy1) + +// 2 +def bruteForce2(arr:Array[Int]):(Int, Int) = +{ + var tuple = (0, 0) + for (i <- 0 to 99; j <- 0 to 99) + { + var copy = arr.clone() + copy(1) = i + copy(2) = j + if (tapeTraversal1(copy) == 19690720) tuple = (i, j) + } + tuple +} + +val result2 = bruteForce2(original) + + + + +