kalinikov

2. Present Delivery

Feb 19th, 2020
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.59 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class PresentDelivery {
  4. public static void main(String[] args) {
  5. Scanner scanner = new Scanner(System.in);
  6.  
  7. int presents = Integer.parseInt(scanner.nextLine());
  8.  
  9. int rows = Integer.parseInt(scanner.nextLine());
  10. int cols = rows;
  11.  
  12. char[][] matrix = new char[rows][];
  13.  
  14. int rowSanta = -1;
  15. int colSanta = -1;
  16. int countNiceKids = 0;
  17. int presentsForNiceKids = 0;
  18.  
  19. for (int row = 0; row < rows; row++) {
  20. String charsAsString = String.join("", scanner.nextLine().split("\\s+"));
  21. matrix[row] = charsAsString.toCharArray();
  22. for (int col = 0; col < matrix[row].length; col++) {
  23. if (matrix[row][col] == 'S') {
  24. rowSanta = row;
  25. colSanta = col;
  26. } else if (matrix[row][col] == 'V') {
  27. countNiceKids++;
  28. }
  29. }
  30. }
  31.  
  32. String command = scanner.nextLine();
  33.  
  34. while (presents > 0 && !command.equals("Christmas morning")) {
  35. switch (command) {
  36. case "up":
  37. matrix[rowSanta][colSanta] = '-';
  38. rowSanta--;
  39. if (!isInMatrix(rowSanta, colSanta, matrix)) {
  40. presents = 0;
  41. break;
  42. }
  43. if (matrix[rowSanta][colSanta] == 'X') {
  44. matrix[rowSanta][colSanta] = 'S';
  45. } else if (matrix[rowSanta][colSanta] == 'V') {
  46. presents--;
  47. presentsForNiceKids++;
  48. matrix[rowSanta][colSanta] = 'S';
  49. } else if (matrix[rowSanta][colSanta] == 'C') {
  50. matrix[rowSanta][colSanta] = 'S';
  51. if (matrix[rowSanta][colSanta - 1] == 'V') {
  52. matrix[rowSanta][colSanta - 1] = '-';
  53. presents--;
  54. presentsForNiceKids++;
  55. } else if (matrix[rowSanta][colSanta - 1] == 'X') {
  56. matrix[rowSanta][colSanta - 1] = '-';
  57. presents--;
  58. }
  59.  
  60. if (matrix[rowSanta][colSanta + 1] == 'V' && presents > 0) {
  61. matrix[rowSanta][colSanta + 1] = '-';
  62. presents--;
  63. presentsForNiceKids++;
  64. } else if (matrix[rowSanta][colSanta + 1] == 'X' && presents > 0) {
  65. matrix[rowSanta][colSanta + 1] = '-';
  66. presents--;
  67. }
  68.  
  69. if (matrix[rowSanta - 1][colSanta] == 'V' && presents > 0) {
  70. matrix[rowSanta - 1][colSanta] = '-';
  71. presents--;
  72. presentsForNiceKids++;
  73. } else if (matrix[rowSanta - 1][colSanta] == 'X' && presents > 0) {
  74. matrix[rowSanta - 1][colSanta] = '-';
  75. presents--;
  76. }
  77.  
  78. if (matrix[rowSanta + 1][colSanta] == 'V' && presents > 0) {
  79. matrix[rowSanta + 1][colSanta] = '-';
  80. presents--;
  81. presentsForNiceKids++;
  82. } else if (matrix[rowSanta + 1][colSanta] == 'X' && presents > 0) {
  83. matrix[rowSanta + 1][colSanta] = '-';
  84. presents--;
  85. }
  86. }
  87. break;
  88. case "down":
  89. matrix[rowSanta][colSanta] = '-';
  90. rowSanta++;
  91. if (!isInMatrix(rowSanta, colSanta, matrix)) {
  92. presents = 0;
  93. break;
  94. }
  95. if (matrix[rowSanta][colSanta] == 'X') {
  96. matrix[rowSanta][colSanta] = 'S';
  97. } else if (matrix[rowSanta][colSanta] == 'V') {
  98. presents--;
  99. presentsForNiceKids++;
  100. matrix[rowSanta][colSanta] = 'S';
  101. } else if (matrix[rowSanta][colSanta] == 'C') {
  102. matrix[rowSanta][colSanta] = 'S';
  103. if (matrix[rowSanta][colSanta - 1] == 'V') {
  104. matrix[rowSanta][colSanta - 1] = '-';
  105. presents--;
  106. presentsForNiceKids++;
  107. } else if (matrix[rowSanta][colSanta - 1] == 'X') {
  108. matrix[rowSanta][colSanta - 1] = '-';
  109. presents--;
  110. }
  111.  
  112. if (matrix[rowSanta][colSanta + 1] == 'V' && presents > 0) {
  113. matrix[rowSanta][colSanta + 1] = '-';
  114. presents--;
  115. presentsForNiceKids++;
  116. } else if (matrix[rowSanta][colSanta + 1] == 'X' && presents > 0) {
  117. matrix[rowSanta][colSanta + 1] = '-';
  118. presents--;
  119. }
  120.  
  121. if (matrix[rowSanta - 1][colSanta] == 'V' && presents > 0) {
  122. matrix[rowSanta - 1][colSanta] = '-';
  123. presents--;
  124. presentsForNiceKids++;
  125. } else if (matrix[rowSanta - 1][colSanta] == 'X' && presents > 0) {
  126. matrix[rowSanta - 1][colSanta] = '-';
  127. presents--;
  128. }
  129.  
  130. if (matrix[rowSanta + 1][colSanta] == 'V' && presents > 0) {
  131. matrix[rowSanta + 1][colSanta] = '-';
  132. presents--;
  133. presentsForNiceKids++;
  134. } else if (matrix[rowSanta + 1][colSanta] == 'X' && presents > 0) {
  135. matrix[rowSanta + 1][colSanta] = '-';
  136. presents--;
  137. }
  138. }
  139.  
  140. break;
  141. case "left":
  142. matrix[rowSanta][colSanta] = '-';
  143. colSanta--;
  144. if (!isInMatrix(rowSanta, colSanta, matrix)) {
  145. presents = 0;
  146. break;
  147. }
  148. if (matrix[rowSanta][colSanta] == 'X') {
  149. matrix[rowSanta][colSanta] = 'S';
  150. } else if (matrix[rowSanta][colSanta] == 'V') {
  151. presents--;
  152. presentsForNiceKids++;
  153. matrix[rowSanta][colSanta] = 'S';
  154. } else if (matrix[rowSanta][colSanta] == 'C') {
  155. matrix[rowSanta][colSanta] = 'S';
  156. if (matrix[rowSanta][colSanta - 1] == 'V') {
  157. matrix[rowSanta][colSanta - 1] = '-';
  158. presents--;
  159. presentsForNiceKids++;
  160. } else if (matrix[rowSanta][colSanta - 1] == 'X') {
  161. matrix[rowSanta][colSanta - 1] = '-';
  162. presents--;
  163. }
  164.  
  165. if (matrix[rowSanta][colSanta + 1] == 'V' && presents > 0) {
  166. matrix[rowSanta][colSanta + 1] = '-';
  167. presents--;
  168. presentsForNiceKids++;
  169. } else if (matrix[rowSanta][colSanta + 1] == 'X' && presents > 0) {
  170. matrix[rowSanta][colSanta + 1] = '-';
  171. presents--;
  172. }
  173.  
  174. if (matrix[rowSanta - 1][colSanta] == 'V' && presents > 0) {
  175. matrix[rowSanta - 1][colSanta] = '-';
  176. presents--;
  177. presentsForNiceKids++;
  178. } else if (matrix[rowSanta - 1][colSanta] == 'X' && presents > 0) {
  179. matrix[rowSanta - 1][colSanta] = '-';
  180. presents--;
  181. }
  182.  
  183. if (matrix[rowSanta + 1][colSanta] == 'V' && presents > 0) {
  184. matrix[rowSanta + 1][colSanta] = '-';
  185. presents--;
  186. presentsForNiceKids++;
  187. } else if (matrix[rowSanta + 1][colSanta] == 'X' && presents > 0) {
  188. matrix[rowSanta + 1][colSanta] = '-';
  189. presents--;
  190. }
  191. }
  192. break;
  193. case "right":
  194. matrix[rowSanta][colSanta] = '-';
  195. colSanta++;
  196. if (!isInMatrix(rowSanta, colSanta, matrix)) {
  197. presents = 0;
  198. break;
  199. }
  200. if (matrix[rowSanta][colSanta] == 'X') {
  201. matrix[rowSanta][colSanta] = 'S';
  202. } else if (matrix[rowSanta][colSanta] == 'V') {
  203. presents--;
  204. presentsForNiceKids++;
  205. matrix[rowSanta][colSanta] = 'S';
  206. } else if (matrix[rowSanta][colSanta] == 'C') {
  207. matrix[rowSanta][colSanta] = 'S';
  208. if (matrix[rowSanta][colSanta - 1] == 'V') {
  209. matrix[rowSanta][colSanta - 1] = '-';
  210. presents--;
  211. presentsForNiceKids++;
  212. } else if (matrix[rowSanta][colSanta - 1] == 'X') {
  213. matrix[rowSanta][colSanta - 1] = '-';
  214. presents--;
  215. }
  216.  
  217. if (matrix[rowSanta][colSanta + 1] == 'V' && presents > 0) {
  218. matrix[rowSanta][colSanta + 1] = '-';
  219. presents--;
  220. presentsForNiceKids++;
  221. } else if (matrix[rowSanta][colSanta + 1] == 'X' && presents > 0) {
  222. matrix[rowSanta][colSanta + 1] = '-';
  223. presents--;
  224. }
  225.  
  226. if (matrix[rowSanta - 1][colSanta] == 'V' && presents > 0) {
  227. matrix[rowSanta - 1][colSanta] = '-';
  228. presents--;
  229. presentsForNiceKids++;
  230. } else if (matrix[rowSanta - 1][colSanta] == 'X' && presents > 0) {
  231. matrix[rowSanta - 1][colSanta] = '-';
  232. presents--;
  233. }
  234.  
  235. if (matrix[rowSanta + 1][colSanta] == 'V' && presents > 0) {
  236. matrix[rowSanta + 1][colSanta] = '-';
  237. presents--;
  238. presentsForNiceKids++;
  239. } else if (matrix[rowSanta + 1][colSanta] == 'X' && presents > 0) {
  240. matrix[rowSanta + 1][colSanta] = '-';
  241. presents--;
  242. }
  243. }
  244. break;
  245. }
  246.  
  247. if (presents == 0) {
  248. System.out.println("Santa ran out of presents!");
  249. break;
  250. }
  251.  
  252. command = scanner.nextLine();
  253. }
  254.  
  255. printMatrix(matrix);
  256.  
  257. if (countNiceKids == presentsForNiceKids) {
  258. System.out.printf("Good job, Santa! %d happy nice kid/s.", countNiceKids);
  259. } else {
  260. System.out.printf("No presents for %d nice kid/s.", countNiceKids - presentsForNiceKids);
  261. }
  262.  
  263.  
  264.  
  265. }
  266.  
  267.  
  268. private static boolean isInMatrix(int row, int col, char[][] matrix) {
  269. if (row >= 0 && row < matrix.length && col >= 0 && col < matrix[row].length) {
  270. return true;
  271. }
  272. return false;
  273. }
  274.  
  275. private static void printMatrix(char[][] matrix) {
  276. for (int row = 0; row < matrix.length; row++) {
  277. for (int col = 0; col < matrix[row].length; col++) {
  278. System.out.print(matrix[row][col] + " ");
  279. }
  280. System.out.println();
  281. }
  282. }
  283. }
Add Comment
Please, Sign In to add comment