Add files via upload
This commit is contained in:
parent
9c102b0246
commit
96927642c1
34
2019/Scala/day02/Day2.scala
Normal file
34
2019/Scala/day02/Day2.scala
Normal 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
|
||||
}
|
||||
|
||||
}
|
23
2019/Scala/day02/Main.scala
Normal file
23
2019/Scala/day02/Main.scala
Normal 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()
|
||||
}
|
||||
|
||||
}
|
43
2019/Scala/day02/worksheet2.sc
Normal file
43
2019/Scala/day02/worksheet2.sc
Normal 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)
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in a new issue