玉兔主程序复杂版

玉兔号离开嫦娥三号后,根据自身安装的定位系统可以知道自己的初始位置,我们记为 X0 , Y0 ;同时玉兔号也可以知道当前它的朝向,如东、西、南、北(暂时只考虑这四个方向)。

中国国家航天局会向玉兔号发送指令,我们先暂定为3种:

  1. F : 当玉兔号接收到这条指令之后,会向前移动一个坐标单位的距离
  2. L : 当玉兔号接受到这条指令之后,会原地向左旋转90度
  3. R : 当玉兔号接收到这条指令之后,会原地向右旋转90度

要求:

一)设计一个玉兔号的主程序,能够接收中国国家航天局发送过来的指令序列(如FFLFRFLL),执行该指令序列之后,玉兔号能够走到正确的位置,并知道当前正确的位置。(如:玉兔号初始位置为 (0,0),方向朝东,执行指令 FFLFRFLL之后,位置为 (3,1) 方向朝西)

三)主程序可以用任何语言编写,如Java、C#、Ruby、Python、PHP等

在所选语言允许的情况下,请编写相应的单元测试 

主程序:

/**
 * @author:sky
 * @Description:TODO
 * @CreateDate:2014-2-10下午8:43:00
 */
public class YuTu {
    //计算玉兔位置
    public  String position(int x,int y,String instructions, char toward){
        //将字符串转为char数组
        char[] instruction=instructions.toCharArray();
        for(int i=0;i<instruction.length;i++){
            if(toward=='东'){
                if(instruction[i]=='F'){
                    x=x+1;
                }
                if(instruction[i]=='L'){
                    toward='北';
                    continue;
                }
                if(instruction[i]=='R'){
                    toward='南';
                    continue;
                }
            }
            if(toward=='西'){
                if(instruction[i]=='F'){
                    x=x-1;
                }
                if(instruction[i]=='L'){
                    toward='南';
                    continue;
                }
                if(instruction[i]=='R'){
                    toward='北';
                    continue;
                }
            }
            if(toward=='南'){
                if(instruction[i]=='F'){
                    y=y-1;
                }
                if(instruction[i]=='L'){
                    toward='东';
                    continue;
                }
                if(instruction[i]=='R'){
                    toward='西';
                    continue;
                }
            }
            if(toward=='北'){
                if(instruction[i]=='F'){
                    y=y+1;
                }
                if(instruction[i]=='L'){
                    toward='西';
                    continue;
                }
                if(instruction[i]=='R'){
                    toward='东';
                    continue;
                }
            }
        }
            return "当前位置为:("+ x+","+y+"),方向朝"+toward;
        
    }

}

 

  

posted @ 2014-02-12 10:55  esther&  阅读(16)  评论(0)    收藏  举报