dojo-mars-rover/src/main/kotlin/org/example/Rover.kt
2025-10-14 20:57:30 +02:00

58 lines
1.3 KiB
Kotlin

package org.example
class Rover {
constructor(p: String) {
val s = p.split(' ')
if (s.size >= 3) {
rs.xx = s[0].toInt()
rs.yy = s[1].toInt()
rs.dd = s[2][0]
}
}
fun go(cms: String) {
for (c in cms) {
when (c) {
'L' -> {
when (rs.dd) {
'E' -> rs.dd = 'N'
'N' -> rs.dd = 'W'
'W' -> rs.dd = 'S'
'S' -> rs.dd = 'E'
}
}
'R' -> {
when (rs.dd) {
'E' -> rs.dd = 'S'
'S' -> rs.dd = 'W'
'W' -> rs.dd = 'N'
'N' -> rs.dd = 'E'
}
}
'M' -> {
when (rs.dd) {
'E' -> rs.xx++
'S' -> rs.yy--
'W' -> rs.xx--
'N' -> rs.yy++
}
}
}
}
}
val xyd: String
get() = "${rs.xx} ${rs.yy} ${rs.dd}"
fun pos(): String {
return xyd
}
private var rs = RoverState()
}
class RoverState {
var xx: Int = 0
var yy: Int = 0
var dd: Char = 'N'
}