一个机器人降落在火星上,这恰好是一个笛卡尔网格;假设我们将这些指令交给机器人,例如LFFFRFFFRRFFF,其中“L”是“向左转90度”,“R”是“向右转90度”,而“F”是“前进一个空间”,请为机器人编写控制代码,使其最终到达适当和正确的目的地,并包括单元测试。
下面是命令“FF”的输出示例:
[0, 2]
我可以在谷歌上找到这个问题的解决方案,但我不太清楚解释。我正在努力清楚地理解如何解决这个问题并在Java中实施的逻辑。感谢任何帮助。
更新:这是一个面试问题。目前,我正在努力提高我的知识。这对我来说是一个有趣的问题。如果我打破了任何叠加规则,我可以删除它。
这是我做的研究:Java 8中有Scala的对等物吗?
用于查找 NxN 网格中所有路径的算法
http://www . geeks forgeeks . org/check-if-a-given-sequence-of-moves-for-a-robot-is-circular-or-not/
超级酷帅,你的逻辑是正确的基于我的观点,我测试了你的代码,发现了一些错误,你的字符串d需要在for循环之前转换数组*
in.nextLine().toCharArray()
*;和字符串 d 将是 char[]d 。此外,您的打印输出已更改
("["协弦[0]","协弦[1]"]")
。这是我做的全部代码。从那以后,它开始工作了
import java.util.Scanner;
public class Run{
public static void main(String []args){
int angle = 0, c = 0;
int[] coords = {0,0};
String d;
Scanner in = new Scanner(System.in);
System.out.println("Input your command");
d = in.nextLine();
for (c = 0; c < d.length; c++){
if (d[c] == 'R'){
angle = (angle + 90)%360;
}else if (d[c] == 'L'){
angle = (angle + 270)%360;
}else if (d[c] == 'F'){
switch(angle){
case 0: coords[1]++;break;
case 90: coords[0]++;break;
case 180: coords[1]--;break;
case 270: coords[0]--;
}
}
}
System.out.println('['+coords[0]+','+coords[1]+']');
}
}
我认为这段代码很简单。目前我没有Java环境,所以我无法测试它。如果我错了,请纠正我
我为您准备了以下代码:
public static String calculate(String str) {
int x = 0;
int y = 0;
int[][] move = {{0,1}, {1,0}, {-1,0}, {0,-1}};
int dir = 0;
for (char ch: str.toCharArray()) {
if (ch == 'F') {
x += move[dir][0];
y += move[dir][1];
} else if (ch == 'L') {
dir++;
} else if (ch == 'R') {
dir--;
}
dir = (dir + 4) % 4;
}
return "[" + x + ", " + y + "]";
}
让我们来分析一下我幼稚的解决方案。
int[][] move = {{0,1},{1,0},{-1,0},{0,-1 } };
是指当您使用变量< code>dir向左旋转led时的所有运动组合。 < li >循环< code>String str以获取each命令 < li >阅读命令,如果是< code>F,则向< code>dir方向移动。子阵列代表轴。 < li >如果旋转,增加或减少< code>dir以获得正确的结果。 < li >最后使< code>dir不溢出< code > dir =(dir 4)% 4;。这意味着当我向下移动< code>dir = 0并向左移动(< code>dir - )时,它将导致< code>dir=-1,这是非法的。因此< code>dir 4 = 3和< code>3 % 4 = 3,它给出了最后一组方向。
希望它有帮助,你现在明白了逻辑。
请,任何人都可以帮助我找到正确的XPath来检索日期值“07/05/2018 04:45” 我试过但没有成功: /输入[@type=“text”]@值 //*[@id="start Date"]
问题内容: 我正在使用Maven开发Swing独立应用程序。我尝试遵循MVC模式。我对我的项目结构感到困惑。我有这样的事情: 现在,我想合并Spring框架,这使我可以放置DAO和BO接口和实现。我已阅读本文链接,建议的项目结构不适合我的项目。我想到的是添加以下内容: dao目录的内容如下所示(在模型目录中包含Client和Customer类): 这不好吗?我想学习好的做法。 问题答案: 您可以遵
前几天,我开始注意到我的应用程序中有一些东西,它非常不一致。有时会发生,有时不会。 我正在使用导航组件来处理应用程序中的导航,我开始注意到,有时,当通过操作栏后退按钮或设备后退按钮弹出后退时,它返回到一个不再是起始目的地(或至少不应该是)的片段。 在我的例子中,应用程序在MainFragment中启动,经过身份验证后移动到DashboardFragment。这是一种非常常见的情况。 应用程序中的导
当我尝试只使用Id作为值并删除列表时,它工作了。
null 我相信这个答案是正确的,但我无法证明。有人能证明它为什么起作用或提供一个反例吗?