Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.61 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3.  
  4. public class AcslProblem3
  5. {
  6. private static final char[][] theBoard = new char[8][8];
  7. private static final int[][] turnValues = new int[8][8];
  8. private static final boolean[][] visited = new boolean[8][8];
  9.  
  10. public static void main(String[] args)
  11. {
  12. try
  13. {
  14. BufferedReader br = new BufferedReader(new FileReader("C:\\Cygwinx64\\home\\phoxha\\acsl3.txt"));
  15.  
  16. String firstLine = br.readLine();
  17. String currLine;
  18. while ((currLine = br.readLine()) != null && !"".equals(currLine)) {
  19. reset(firstLine);
  20. String[] instructions = currLine.split(",");
  21. int currRow = Integer.parseInt(instructions[0]) - 1;
  22. int currCol = Integer.parseInt(instructions[1]) - 1;
  23. String currDir = "";
  24. if ("R".equals(instructions[2])) currDir = "L";
  25. if ("L".equals(instructions[2])) currDir = "R";
  26. if ("A".equals(instructions[2])) currDir = "B";
  27. if ("B".equals(instructions[2])) currDir = "A";
  28. int nrSteps = Integer.parseInt(instructions[3]);
  29. for (int i = 0; i < nrSteps; i++)
  30. {
  31. if (visited[currRow][currCol] && theBoard[currRow][currCol] != '0')
  32. turnValues[currRow][currCol] = (turnValues[currRow][currCol] + 90) % 360;
  33. switch (currDir)
  34. {
  35. case "B":
  36. if (theBoard[currRow][currCol] != '0') {
  37. if(turnValues[currRow][currCol] == 90) {
  38. currDir = "R";
  39. } else if(turnValues[currRow][currCol] == 180) {
  40. currDir = "B";
  41. } else if(turnValues[currRow][currCol] == 270) {
  42. currDir = "L";
  43. } else if(turnValues[currRow][currCol] == 0) {
  44. currDir = "A";
  45. }
  46. }
  47. break;
  48. case "A":
  49. if (theBoard[currRow][currCol] != '0') {
  50. if(turnValues[currRow][currCol] == 90) {
  51. currDir = "L";
  52. } else if(turnValues[currRow][currCol] == 180) {
  53. currDir = "A";
  54. } else if(turnValues[currRow][currCol] == 270) {
  55. currDir = "R";
  56. } else if(turnValues[currRow][currCol] == 0) {
  57. currDir = "B";
  58. }
  59. }
  60. break;
  61. case "L":
  62. if (theBoard[currRow][currCol] != '0') {
  63. if(turnValues[currRow][currCol] == 90) {
  64. currDir = "B";
  65. } else if(turnValues[currRow][currCol] == 180) {
  66. currDir = "L";
  67. } else if(turnValues[currRow][currCol] == 270) {
  68. currDir = "A";
  69. } else if(turnValues[currRow][currCol] == 0) {
  70. currDir = "R";
  71. }
  72. }
  73. break;
  74. case "R":
  75. if (theBoard[currRow][currCol] != '0') {
  76. if(turnValues[currRow][currCol] == 90) {
  77. currDir = "A";
  78. } else if(turnValues[currRow][currCol] == 180) {
  79. currDir = "L";
  80. } else if(turnValues[currRow][currCol] == 270) {
  81. currDir = "B";
  82. } else if(turnValues[currRow][currCol] == 0) {
  83. currDir = "R";
  84. }
  85. }
  86. break;
  87. default:
  88. break;
  89. }
  90.  
  91. visited[currRow][currCol] = true;
  92. if (currDir.equals("A")) currRow = (currRow - 1) >= 0 ? currRow - 1 : 7;
  93. if (currDir.equals("B")) currRow = (currRow + 1) <= 7 ? currRow + 1 : 0;
  94. if (currDir.equals("L")) currCol = (currCol - 1) >= 0 ? currCol - 1 : 7;
  95. if (currDir.equals("R")) currCol = (currCol + 1) <= 7 ? currCol + 1 : 0;
  96. }
  97. System.out.println((currRow+1) + "," + (currCol+1));
  98. }
  99. br.close();
  100. } catch (Exception e)
  101. {
  102. e.printStackTrace();
  103. }
  104. }
  105.  
  106. private static void reset(String firstLine) {
  107. String[] hexVals = firstLine.split(",");
  108. for (int i = 0; i < hexVals.length; i++)
  109. {
  110. String row = Integer.toBinaryString(Integer.parseInt(hexVals[i].trim(), 16));
  111. for (int j = 0; j < 8 ; j++)
  112. {
  113. theBoard[i][j] = (j < 8 - row.length() ? '0' : row.charAt(j - 8 + row.length()));
  114. turnValues[i][j] = (theBoard[i][j] == '1' ? 90 : 0);
  115. visited[i][j] = false;
  116. //System.out.print(theBoard[i][j]);
  117. }
  118. //System.out.println();
  119. }
  120. }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement