Add files via upload

This commit is contained in:
kamoshi 2019-12-13 07:38:22 +01:00 committed by GitHub
parent 7a379391a8
commit 795e2169ef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 107 additions and 0 deletions

View file

@ -0,0 +1,92 @@
package day13
import intcode.{Finished, Input, Machine, Ready}
import kamlib.{Reader, Wrapper}
import scala.collection.mutable
object Main {
val screen = Array.ofDim[Int](50, 50)
@scala.annotation.tailrec
def drawScreen(list: List[Long]): Unit = {
list match {
case List() => ()
case x1::x2::x3::xs =>
if (x1 == -1 && x2 == 0) {
println(x3)
drawScreen(xs)
}
else drawScreen(xs) /*screen(x2.toInt)(x1.toInt) match {
case 0 =>
screen(x2.toInt)(x1.toInt) = x3.toInt
drawScreen(xs)
case 1 =>
drawScreen(xs)
case 2 =>
if (x3 == 4) screen(x2.toInt)(x1.toInt) = x3.toInt
else drawScreen(xs)
case 3 =>
drawScreen(xs)
case 4 =>
screen(x2.toInt)(x1.toInt) = x3.toInt
drawScreen(xs)
}*/
}
}
def logScreen(): Unit = {
println()
for (i <- 0 until 50; j <- 0 until 50) {
screen(j)(i) match {
case 0 => print('.')
case 1 => print('X')
case 2 => print('#')
case 3 => print('-')
case 4 => print('o')
}
if (j == 49) println()
}
}
@scala.annotation.tailrec
final def listof0(n: Int, list: List[Long] = List()): List[Long] = {
n match {
case 0 => list
case k => listof0(k-1, 0::list)
}
}
@scala.annotation.tailrec
final def iterate(machine: Machine): Unit = {
machine.getState match {
case Finished =>
drawScreen(machine.outputAll)
//logScreen()
()
case Input =>
machine.enqueue(0L)
machine.run()
drawScreen(machine.outputAll)
//logScreen()
iterate(machine)
case Ready =>
machine.run()
drawScreen(machine.outputAll)
//logScreen()
iterate(machine)
}
}
def main(args: Array[String]): Unit = {
val memory: Array[Long] = Array.ofDim[Long](5000)
val input: Array[Long] = Reader.readString("/input13.txt").split("[^\\d-]+").map(x => x.toLong)
for(i <- input.indices) { memory(i) = input(i)}
val machine: Machine = new Machine(memory)
machine.setMem(0, 2)
iterate(machine)
}
}

View file

@ -0,0 +1,15 @@
import intcode.Machine
import kamlib.Reader
import scala.collection.mutable
// Initialize initial program memory
var maxX = 0
var maxY = 0