■問題
ロボットに命令を与える.命令は,前進,左回転,右回転からなる.与えられた命令列を永遠に実行した場合,ロボットは初期地点から無限に遠ざかるか,そうでないか,を判定せよ.
■解法
ロボットの向きは上下左右の4通りしか無い.よって,命令列を4回実行すれば必ず元の向きを向く.この時初期地点に居なければ,ロボットが無限遠へ行ってしまうのは明らか.
- public class SequenceOfCommands{
- public String whatHappens(String[] commands){
- String ss="";
- for(String s:commands){
- ss+=s;
- }
- ss=ss+ss+ss+ss;
- int x=0,y=0,d=0;
- int[] dx={1,0,-1,0};
- int[] dy={0,1,0,-1};
- for(char c:ss.toCharArray()){
- if(c=='S'){
- x+=dx[d];
- y+=dy[d];
- }
- else if(c=='L'){
- d=(d+3)%4;
- }
- else{
- d=(d+1)%4;
- }
- }
- return x==0&&y==0?"bounded":"unbounded";
- }
- }
0 件のコメント:
コメントを投稿