Advertisement
Guest User

Untitled

a guest
Jan 26th, 2017
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.13 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. /**
  5. * Created by Austin on 26/01/2017.
  6. */
  7. public class Bunnies {
  8. public static void main(String[] args) {
  9.  
  10. Scanner sc = new Scanner(System.in);
  11.  
  12. int[] input = Arrays.stream(sc.nextLine().split("\\s+"))
  13. .mapToInt(Integer::parseInt)
  14. .toArray();
  15.  
  16. int rows = input[0];
  17. int cols = input[1];
  18.  
  19. boolean isWinner = false;
  20. boolean isDead = false;
  21.  
  22. int rowOfPlayer = 0;
  23. int colOfPlayer = 0;
  24.  
  25. char[][] lair = new char[rows][cols];
  26.  
  27. for (int i = 0; i < rows; i++) {
  28.  
  29. String elements = sc.nextLine();
  30.  
  31. if (elements.contains("P")) {
  32. colOfPlayer = elements.indexOf('P');
  33. rowOfPlayer = i;
  34. }
  35.  
  36. lair[i] = elements.toCharArray();
  37. }
  38.  
  39.  
  40. char[] commands = sc.nextLine().toCharArray();
  41.  
  42. for (int i = 0; i < commands.length; i++) {
  43. char command = commands[i];
  44. switch (command) {
  45. case 'U':
  46. if(rowOfPlayer - 1 < 0){
  47. isWinner = true;
  48. lair[rowOfPlayer][colOfPlayer] = '.';
  49. break;
  50. } else if(lair[rowOfPlayer-1][colOfPlayer] == 'B'){
  51. isDead = true;
  52. lair[rowOfPlayer][colOfPlayer] = '.';
  53. rowOfPlayer--;
  54. break;
  55. }else{
  56. lair[rowOfPlayer][colOfPlayer] = '.';
  57. lair[rowOfPlayer-1][colOfPlayer] = 'P';
  58.  
  59. rowOfPlayer--;
  60. break;
  61. }
  62. case 'D':
  63. if(rowOfPlayer + 1 > rows-1){
  64. isWinner = true;
  65. lair[rowOfPlayer][colOfPlayer] = '.';
  66. break;
  67. } else if(lair[rowOfPlayer+1][colOfPlayer] == 'B'){
  68. isDead = true;
  69. lair[rowOfPlayer][colOfPlayer] = '.';
  70. rowOfPlayer++;
  71. break;
  72. }else{
  73. lair[rowOfPlayer][colOfPlayer] = '.';
  74. lair[rowOfPlayer+1][colOfPlayer] = 'P';
  75.  
  76. rowOfPlayer++;
  77. break;
  78. }
  79. case 'L':
  80. if(colOfPlayer - 1 < 0){
  81. isWinner = true;
  82. lair[rowOfPlayer][colOfPlayer] = '.';
  83. break;
  84. } else if(lair[rowOfPlayer][colOfPlayer-1] == 'B'){
  85. isDead = true;
  86. lair[rowOfPlayer][colOfPlayer] = '.';
  87. colOfPlayer--;
  88. break;
  89. }else{
  90. lair[rowOfPlayer][colOfPlayer] = '.';
  91. lair[rowOfPlayer][colOfPlayer-1] = 'P';
  92.  
  93. colOfPlayer--;
  94. break;
  95. }
  96. case 'R':
  97. if(colOfPlayer + 1 > cols-1){
  98. isWinner = true;
  99. lair[rowOfPlayer][colOfPlayer] = '.';
  100. break;
  101. } else if(lair[rowOfPlayer][colOfPlayer+1] == 'B'){
  102. isDead = true;
  103. lair[rowOfPlayer][colOfPlayer] = '.';
  104.  
  105. colOfPlayer++;
  106. break;
  107. }else{
  108. lair[rowOfPlayer][colOfPlayer] = '.';
  109. lair[rowOfPlayer][colOfPlayer+1] = 'P';
  110.  
  111. colOfPlayer++;
  112. break;
  113. }
  114. default:
  115. break;
  116. }
  117.  
  118. lair = bunnyfyFirst(rows, cols, lair);
  119. if(lair[rowOfPlayer][colOfPlayer] != 'P'){
  120. isDead = true;
  121. }
  122.  
  123. }
  124.  
  125.  
  126.  
  127.  
  128. if(isWinner){
  129. PrintMatrix(lair);
  130. System.out.println(String.format("won: %d %d", rowOfPlayer, colOfPlayer));
  131. }else if(isDead){
  132. PrintMatrix(lair);
  133. System.out.println(String.format("dead: %d %d", rowOfPlayer, colOfPlayer));
  134. }
  135. }
  136.  
  137. private static char[][] bunnyfyFirst(int rows, int cols, char[][] lair) {
  138.  
  139. char[][] temp = new char[lair.length][lair[0].length];
  140.  
  141. for (int row = 0; row < rows; row++) {
  142. for (int col = 0; col < cols; col++) {
  143. if(lair[row][col] == 'B') {
  144. int leftSpread = Math.max(0, col - 1);
  145. int rightSpread = Math.min(col + 1, cols - 1);
  146. int upSpread = Math.max(0, row - 1);
  147. int downSpread = Math.min(row + 1, rows - 1);
  148.  
  149. temp[row][col] = 'B';
  150. temp[upSpread][col] = 'B';
  151. temp[downSpread][col] = 'B';
  152. temp[row][leftSpread] = 'B';
  153. temp[row][rightSpread] = 'B';
  154.  
  155. } else if(lair[row][col] == 'P'){
  156. temp[row][col] = 'P';
  157. }else if(temp[row][col] == 0){
  158. temp[row][col] = '.';
  159. }
  160. }
  161. }
  162.  
  163. return temp;
  164. }
  165.  
  166. // private static void bunnyfy(int y, int x, char[][] matrix) {
  167. // for (int mRow = 0; mRow < matrix.length; mRow++) {
  168. // for (int mCol = 0; mCol < matrix[0].length; mCol++) {
  169. // //(x-center_x)^2 + (y - center_y)^2 < radius^2
  170. // if (Math.pow((mCol- x), 2) + Math.pow(mRow- y,2) <= 1){
  171. // matrix[mRow][mCol] = 'B';
  172. // }
  173. // }
  174. // }
  175. // }
  176.  
  177. private static void PrintMatrix(char[][] matrix) {
  178. for (char[] ch : matrix) {
  179. for (int aCh : ch) {
  180. System.out.print((char)aCh + "");
  181. }
  182. System.out.println();
  183. }
  184. }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement