У меня есть проблема, когда ему нужно перемещаться по пауку в сетке (координата X, Y) с соответствующей инструкцией. Первоначально паук находится в (0,0) и обращен к положительной оси Y.Как перемещаться по пауку в сетке?
Существует 3 возможных инструкций для навигации: «F» для вперед (1 сетка в одном направлении), «R» для поворота вправо (90 градусов) и «L» для поворота влево (90 градусов) и изначально , паук обращается к положительной оси Y.
Скажите, если я передаю направление «LFF», позиция должна быть (-2,0). Я решить эту проблему и текущее состояние кода следующим образом,
public static void spiderNavigator(String str){
if(str == null || str.length() == 0)
return;
int [] initial = {0,0};
boolean xPos = false, xNeg = false, yPos = true, yNeg = false;
char[] ch = str.toCharArray();
for(char c: ch){
// the initial position of the spider is towards the positive Y axis
if(c == 'L'){
if(xPos){
xPos = false;
yPos = true;
}
else if (xNeg){
xNeg = false;
yNeg = true;
}
else if(yPos){
xNeg = true;
yPos = false;
}
else if (yNeg){
yNeg = false;
xPos = true;
}
}
else if (c == 'R'){
if(xPos){
xPos = false;
yNeg = true;
}
else if (xNeg){
yPos = true;
xNeg = false;
}
else if(yPos){
yPos = false;
xPos = true;
}
else if (yNeg){
yNeg = false;
xNeg = true;
}
}
else if (c == 'F'){
if(xNeg){
initial[0] -= 1;
}
else if (xPos){
initial[0] += 1;
}
else if (yNeg){
initial[1] -=1;
}
else if(yPos){
initial[1] += 1;
}
}
}
System.out.println(Arrays.toString(initial));
}
Однако код чувствует себя довольно некрасиво даже для меня. Как я могу лучше разработать алгоритм?
Я голосую, чтобы закрыть этот вопрос не по теме, потому что она принадлежит http://codereview.stackexchange.com/ – Paul