[R30A]机器人移动2
- 难度 入门
- 时限 1s
- 空限 512m
- 模拟
数据规模:, 只包含
U、D、L、R。
思路
按题意从 出发,依次处理指令字符串中的每个字符,用两个变量维护当前坐标:遇到 U/D 就对 加减 1,遇到 L/R 就对 加减 1。处理完整串指令后输出最终的 即可。
由于仓颉中 for (ch in s) 遍历字符串得到的是 UTF-8 字节(UInt8),直接用 ASCII 码值(85u8 对应 U 等)来比较分支即可。
复杂度
时间 ,空间 。
仓颉实现
import std.env.*
main(): Int64 {
let reader = getStdIn()
let s = reader.readln().getOrThrow()
var x: Int64 = 0
var y: Int64 = 0
for (b in s) {
if (b == 85u8) { // 'U'
y += 1
} else if (b == 68u8) { // 'D'
y -= 1
} else if (b == 76u8) { // 'L'
x -= 1
} else if (b == 82u8) { // 'R'
x += 1
}
}
println("${x} ${y}")
return 0
}