如何在网格系统中导航芭比?

时间:2016-01-06 01:30:39

标签: java navigation

我试图解决在网格系统中导航芭比娃娃的有趣问题。最初,芭比位于[0,0]位置,意味着在X轴和Y轴的交点。芭比有3个关于运动的行动与F' F'对于前锋,' R'右转(90度)和' L'左转(90度)。比方说,如果我传递" FF"的方向字符串,则位置应为[0,2]。我解决了问题,代码的当前状态如下,

public static void barbiePosition(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 postion of the robot 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));
}

问题是我不是解决方案,因为它感觉很难看。有没有更好的方法 设计算法?

1 个答案:

答案 0 :(得分:1)

什么构成'转发'在您的应用程序中是前一步的功能。 向前只是意味着你重复你的最后一步。

如果前进是你的第一步,你需要选择一个类似于&#34的惯例;芭比最初会向右移动"。