58 lines
1.3 KiB
Kotlin
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'
|
|
}
|