Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.FileReader;
- public class AcslProblem3
- {
- private static final char[][] theBoard = new char[8][8];
- private static final int[][] turnValues = new int[8][8];
- private static final boolean[][] visited = new boolean[8][8];
- public static void main(String[] args)
- {
- try
- {
- BufferedReader br = new BufferedReader(new FileReader("C:\\Cygwinx64\\home\\phoxha\\acsl3.txt"));
- String firstLine = br.readLine();
- String currLine;
- while ((currLine = br.readLine()) != null && !"".equals(currLine)) {
- reset(firstLine);
- String[] instructions = currLine.split(",");
- int currRow = Integer.parseInt(instructions[0]) - 1;
- int currCol = Integer.parseInt(instructions[1]) - 1;
- String currDir = "";
- if ("R".equals(instructions[2])) currDir = "L";
- if ("L".equals(instructions[2])) currDir = "R";
- if ("A".equals(instructions[2])) currDir = "B";
- if ("B".equals(instructions[2])) currDir = "A";
- int nrSteps = Integer.parseInt(instructions[3]);
- for (int i = 0; i < nrSteps; i++)
- {
- if (visited[currRow][currCol] && theBoard[currRow][currCol] != '0')
- turnValues[currRow][currCol] = (turnValues[currRow][currCol] + 90) % 360;
- switch (currDir)
- {
- case "B":
- if (theBoard[currRow][currCol] != '0') {
- if(turnValues[currRow][currCol] == 90) {
- currDir = "R";
- } else if(turnValues[currRow][currCol] == 180) {
- currDir = "B";
- } else if(turnValues[currRow][currCol] == 270) {
- currDir = "L";
- } else if(turnValues[currRow][currCol] == 0) {
- currDir = "A";
- }
- }
- break;
- case "A":
- if (theBoard[currRow][currCol] != '0') {
- if(turnValues[currRow][currCol] == 90) {
- currDir = "L";
- } else if(turnValues[currRow][currCol] == 180) {
- currDir = "A";
- } else if(turnValues[currRow][currCol] == 270) {
- currDir = "R";
- } else if(turnValues[currRow][currCol] == 0) {
- currDir = "B";
- }
- }
- break;
- case "L":
- if (theBoard[currRow][currCol] != '0') {
- if(turnValues[currRow][currCol] == 90) {
- currDir = "B";
- } else if(turnValues[currRow][currCol] == 180) {
- currDir = "L";
- } else if(turnValues[currRow][currCol] == 270) {
- currDir = "A";
- } else if(turnValues[currRow][currCol] == 0) {
- currDir = "R";
- }
- }
- break;
- case "R":
- if (theBoard[currRow][currCol] != '0') {
- if(turnValues[currRow][currCol] == 90) {
- currDir = "A";
- } else if(turnValues[currRow][currCol] == 180) {
- currDir = "L";
- } else if(turnValues[currRow][currCol] == 270) {
- currDir = "B";
- } else if(turnValues[currRow][currCol] == 0) {
- currDir = "R";
- }
- }
- break;
- default:
- break;
- }
- visited[currRow][currCol] = true;
- if (currDir.equals("A")) currRow = (currRow - 1) >= 0 ? currRow - 1 : 7;
- if (currDir.equals("B")) currRow = (currRow + 1) <= 7 ? currRow + 1 : 0;
- if (currDir.equals("L")) currCol = (currCol - 1) >= 0 ? currCol - 1 : 7;
- if (currDir.equals("R")) currCol = (currCol + 1) <= 7 ? currCol + 1 : 0;
- }
- System.out.println((currRow+1) + "," + (currCol+1));
- }
- br.close();
- } catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- private static void reset(String firstLine) {
- String[] hexVals = firstLine.split(",");
- for (int i = 0; i < hexVals.length; i++)
- {
- String row = Integer.toBinaryString(Integer.parseInt(hexVals[i].trim(), 16));
- for (int j = 0; j < 8 ; j++)
- {
- theBoard[i][j] = (j < 8 - row.length() ? '0' : row.charAt(j - 8 + row.length()));
- turnValues[i][j] = (theBoard[i][j] == '1' ? 90 : 0);
- visited[i][j] = false;
- //System.out.print(theBoard[i][j]);
- }
- //System.out.println();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement