题解 | #坐标移动#

坐标移动

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 () {
    while ((line = await readline())) {
        const position = createPosition(line);
        console.log(position[0] + "," + position[1]);
    }
})();

const DICT = {
    A: "A",
    D: "D",
    W: "W",
    S: "S",
};
function createPosition(line) {
    const position = [0, 0];

    // 字符串坐标转换成数组
    const sPoistionArr = line.split(";");
    // console.log(sPoistionArr)
    // 验证坐标有效性
    const validPositionArr = sPoistionArr.filter((position) => {
        return isValidedPosition(position);
    });
    // console.log("有效坐标集合", validPositionArr);
    // 转换坐标数组(解析)
    const positionArr = parsePosition(validPositionArr);
    // console.log("解析后的坐标", positionArr);
    // 操作坐标
    positionArr.forEach((pos) => {
        position[0] += pos[0];
        position[1] += pos[1];
    });

    return position;
}
// 解析坐标
function parsePosition(positionArr) {
    return positionArr.map((positinStr) => {
        const direction = positinStr[0];
        const moveSize = positinStr.substr(1);

        const position = [0, 0];
        switch (direction) {
            // 向左
            case DICT.A:
                position[0] = -Number(moveSize);
                break;
            // 向下
            case DICT.D:
                position[0] = Number(moveSize);
                break;
            // 向上
            case DICT.W:
                position[1] = Number(moveSize);
                break;
            // 向下
            case DICT.S:
                position[1] = -Number(moveSize);
                break;
        }
        // console.log(direction, position);
        return position;
    });
}

// 验证坐标是否有效
function isValidedPosition(line) {
    // 验证是否有效
    return !!/^[a-zA-Z]{1}\d{1,2}$/.test(line);
}

全部评论

相关推荐

牛客93169152...:可以发邮件,我停了三天没收到链接,发邮件问了一下,十分钟后就有了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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