请求编写火箭飞行路径JavaScript函数并排查实现错误
火箭飞船模拟器函数错误排查与修正
首先给出满足需求的正确实现代码,再结合你的预期与实际输出差异,分析可能的错误点:
正确实现代码
function rocketSimulator(path) { // 顺时针方向循环:right → down → left → up const directions = ['right', 'down', 'left', 'up']; let dirIndex = 0; // 初始方向为right(+x) let x = 0; let y = 0; for (const char of path) { switch (char) { case 'R': // 右转:顺时针切换方向,索引+1后取模循环 dirIndex = (dirIndex + 1) % 4; break; case 'L': // 左转:逆时针切换方向,索引-1后补4再取模避免负数 dirIndex = (dirIndex - 1 + 4) % 4; break; case 'A': // 根据当前方向更新坐标 switch (directions[dirIndex]) { case 'right': x += 1; break; case 'down': y += 1; break; case 'left': x -= 1; break; case 'up': y -= 1; break; } break; } } return { x, y, direction: directions[dirIndex] }; } // 测试示例输入 console.log(rocketSimulator("RAALALL")); // 输出 { x: 2, y: 1, direction: 'down' }
常见错误点排查
结合你的输出偏差,大概率是以下某几个问题导致:
方向切换逻辑反向
比如你把R(右转)处理成索引减1,L(左转)处理成索引加1,导致方向完全颠倒。示例中第一个字符R本该切换到down,结果变成up,后续前进时y值不增反减,最终方向也会错误。前进时坐标映射错误
比如将down方向的前进写成y -= 1(符合向上为-y的规则,但down对应+y,应该是y +=1),或者把right方向的前进错误映射到y轴,导致x/y更新不符合预期。变量操作错误
可能未初始化y为0,或者更新y时写错变量名(比如写成x +=1),导致y始终为0;也可能循环中判断字符时误转成小写,导致'A'的判断不触发,前进逻辑未执行。方向数组顺序错误
比如你定义的方向顺序是['right', 'up', 'left', 'down'],而非顺时针的['right', 'down', 'left', 'up'],导致右转/左转后的方向错误,进而坐标更新偏离预期。
对照自己的代码检查这些点,应该就能定位并修复问题。
内容的提问来源于stack exchange,提问作者Diconlinks
相关产品推荐
相关产品推荐

