题解 | #坐标移动#

坐标移动

https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
   // 这题解耦做的不错  正则独立出来  坐标计算独立出来
    function getNext(prev, data) {
        const [x, y] = prev;
        const type = data.slice(0, 1);
        const d = parseInt(data.slice(1))

        switch (type) {
            case 'A':
                return [x - d, y];
            case 'S':
                return [x, y - d];
            case 'W':
                return [x, y + d];
            case 'D':
                return [x + d, y]
        }
    }

    while(line = await readline()){
        let tokens = line.split(' ');
        let reg = /^[ASWD]\d{1,2}$/
        const data = tokens[0].split(';')

        const res = data.reduce((accm, cur) => {
            return reg.test(cur) ? getNext(accm, cur) : accm;
        }, [0, 0])

        console.log(res.toString())
    }
}()

全部评论

相关推荐

评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务