Add files via upload

This commit is contained in:
kamoshi 2019-12-06 22:31:15 +01:00 committed by GitHub
parent 9c102b0246
commit 96927642c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 100 additions and 0 deletions

View file

@ -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
}
}

View file

@ -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()
}
}

View file

@ -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)