AdventOfCode-2017/day19.txt.kt

28 lines
1.1 KiB
Kotlin

import java.io.File
fun nextIndex(x: Int, y: Int, dir: Int) = listOf(1 + x to y, x to y-1, x-1 to y, x to y+1)[dir]
fun canMove(x: Int, y: Int, dir: Int, path: List<CharArray>): Boolean {
val (newX, newY) = nextIndex(x, y, dir)
return (newY in 0 until path.size) && (newX in 0 until path[newY].size) && path[newY][newX] != ' '
}
fun main(args: Array<String>) {
val file = File("../puzzle_19.txt")
val path = file.readLines().toList().map { it.toCharArray() }
var (indexX, indexY) = (163 to 0)
var direction = 3
val letterStack = mutableListOf<Char>()
var count = 1
while(true){
if(path[indexY][indexX] in ('A'..'Z')) letterStack.add(path[indexY][indexX])
if(!canMove(indexX, indexY, direction, path)) { direction = (direction + 1) % 4 }
if(!canMove(indexX, indexY, direction, path)) { direction = (direction + 2) % 4 }
if(!canMove(indexX, indexY, direction, path)) break
count++
val moveBy = nextIndex(indexX, indexY, direction)
indexX = moveBy.first
indexY = moveBy.second
}
println(letterStack.joinToString(""))
println(count)
}