You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写火箭飞行路径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' }

常见错误点排查

结合你的输出偏差,大概率是以下某几个问题导致:

  1. 方向切换逻辑反向
    比如你把R(右转)处理成索引减1,L(左转)处理成索引加1,导致方向完全颠倒。示例中第一个字符R本该切换到down,结果变成up,后续前进时y值不增反减,最终方向也会错误。

  2. 前进时坐标映射错误
    比如将down方向的前进写成y -= 1(符合向上为-y的规则,但down对应+y,应该是y +=1),或者把right方向的前进错误映射到y轴,导致x/y更新不符合预期。

  3. 变量操作错误
    可能未初始化y为0,或者更新y时写错变量名(比如写成x +=1),导致y始终为0;也可能循环中判断字符时误转成小写,导致'A'的判断不触发,前进逻辑未执行。

  4. 方向数组顺序错误
    比如你定义的方向顺序是['right', 'up', 'left', 'down'],而非顺时针的['right', 'down', 'left', 'up'],导致右转/左转后的方向错误,进而坐标更新偏离预期。

对照自己的代码检查这些点,应该就能定位并修复问题。

内容的提问来源于stack exchange,提问作者Diconlinks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:31:01