Poj Solution 2632

http://poj.org/problem?id=2632

import java.util.Scanner;  
    
 enum Direction {  
     N, S, W, E  
 }  
    
 class Robot {  
     int id;  
     int x;  
     int y;  
     Direction direction;  
    
     public Robot(int i, int x, int y, String direction) {  
         this.id = i;  
         this.x = x;  
         this.y = y;  
         if (direction.equalsIgnoreCase("N"))  
             this.direction = Direction.N;  
         else if (direction.equalsIgnoreCase("S"))  
             this.direction = Direction.S;  
         else if (direction.equalsIgnoreCase("W"))  
             this.direction = Direction.W;  
         else if (direction.equalsIgnoreCase("E"))  
             this.direction = Direction.E;  
     }  
    
     public void move(String command) {  
         if (command.equalsIgnoreCase("F")) {  
            switch (this.direction) {  
            case N:  
                 this.y++;  
                 break;  
             case S:  
                 this.y--;  
                 break;  
             case W:  
                 this.x--;  
                 break;  
             case E:  
                 this.x++;  
                 break;  
             }  
         } else {  
             this.rotate(command);  
         }  
     }  
    
     public void rotate(String s) {  
         if (s.equalsIgnoreCase("L")) {  
             switch (this.direction) {  
             case N:  
                 this.direction = Direction.W;  
                 break;  
             case S:  
                 this.direction = Direction.E;  
                 break;  
             case W:  
                 this.direction = Direction.S;  
                 break;  
             case E:  
                 this.direction = Direction.N;  
                 break;  
             }  
         } else {  
             switch (this.direction) {  
             case N:  
                 this.direction = Direction.E;  
                 break;  
             case S:  
                 this.direction = Direction.W;  
                 break;  
             case W:  
                 this.direction = Direction.N;  
                 break;  
             case E:  
                 this.direction = Direction.S;  
                 break;  
             }  
         }  
     }  
 }  
    
public class Main {  
    
     public static String collision(Robot[] robots, Robot r, int x_dim, int y_dim) {  
        int num = robots.length;  
         if (r.x <= 0 || r.x > x_dim || r.y <= 0 || r.y > y_dim) {  
             return "Robot " + r.id + " crashes into the wall";  
         }  
         for (int i = 0; i < num; i++) {  
             if (r.x == robots[i].x && r.y == robots[i].y  
                     && r.id != robots[i].id) {  
                 return "Robot " + r.id + " crashes into " + "robot " 
                         + robots[i].id;  
             }  
         }  
         return "OK";  
     }  
    
     public static void main(String[] args) {  
    
         Scanner in = new Scanner(System.in);  
         int rounds = in.nextInt();  
         for (int i = 0; i < rounds; i++) {  
             int x_dimension = in.nextInt();  
             int y_dimension = in.nextInt();  
             int num_robots = in.nextInt();  
             String response = "OK", temp;  
             Robot robots[] = new Robot[num_robots];  
             int num_ins = in.nextInt();  
             for (int j = 1; j < num_robots + 1; j++) {  
                 robots[j - 1] = new Robot(j, in.nextInt(), in.nextInt(), in  
                         .next());  
             }  
             for (int k = 0; k < num_ins; k++) {  
                 int r_id = in.nextInt();  
                 String command = in.next();  
                 int num_iteration = in.nextInt();  
                 Robot robot = robots[r_id - 1];  
                 for (int m = 0; m < num_iteration; m++) {  
                     robot.move(command);  
                     temp = collision(robots, robot, x_dimension, y_dimension);  
                     if (response.startsWith("O") && !temp.startsWith("O"))  
                         response = temp;  
                 }  
             }  
             System.out.println(response);  
         }  
     }  
    
 } 


											
This entry was posted in poj. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *