Advertisement
desislava_topuzakova

Untitled

May 23rd, 2023
349
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.66 KB | None | 0 0
  1. package FunctionalProgramming;
  2.  
  3. import java.util.Scanner;
  4. import java.util.function.DoubleToIntFunction;
  5.  
  6. public class TheSquirrel_02 {
  7. public static void main(String[] args) {
  8. Scanner scanner = new Scanner(System.in);
  9. int hazelnuts = 0; //брой на лешниците (цел = 3)
  10. boolean isTrap = false; //дали сме попаднали в капан
  11.  
  12. int size = Integer.parseInt(scanner.nextLine()); //размер на квадратна матрицата (редове = колони = size)
  13. String [] directions = scanner.nextLine() //"left, left, up, right, up, up"
  14. .split(", "); //["left", "left", "up", "right", "up", "up"]
  15.  
  16. char [][] field = createMatrix(size, scanner); //полето за движение
  17.  
  18. int squirrelRow = -1; //ред на катерицата
  19. int squirrelCol = -1; //колона на катерицата
  20.  
  21. //намираме катерицата
  22. for (int row = 0; row < size; row++) {
  23. for (int col = 0; col < size; col++) {
  24. if (field[row][col] == 's') {
  25. squirrelRow = row;
  26. squirrelCol = col;
  27. }
  28. }
  29. }
  30.  
  31. //движения на катерицата
  32. for (String direction : directions) {
  33. //direction -> "left", "right", "up", "down"
  34. if (direction.equals("left")) {//колона - 1
  35. //1. проверка дали там където отиваме е вътре в матрицата
  36. if (isInside(squirrelCol - 1, size)) {
  37. //можем да се движим -> местим катерицата
  38. field[squirrelRow][squirrelCol] = '*';
  39. squirrelCol -= 1; //местене
  40. //проверка на какво поле сме отишли
  41. if (field[squirrelRow][squirrelCol] == 't') {
  42. //trap
  43. isTrap = true;
  44. System.out.println("Unfortunately, the squirrel stepped on a trap...");
  45. break;
  46. } else if (field[squirrelRow][squirrelCol] == 'h') {
  47. hazelnuts++;
  48. field[squirrelRow][squirrelCol] = 's';
  49. }
  50. } else {
  51. //извън матрицата
  52. isTrap = true;
  53. System.out.println("The squirrel is out of the field.");
  54. break;
  55. }
  56. } else if (direction.equals("right")) {//колона + 1
  57. //1. проверка дали там където отиваме е вътре в матрицата
  58. if (isInside(squirrelCol + 1, size)) {
  59. //можем да се движим -> местим катерицата
  60. squirrelCol += 1;
  61. //проверка на какво поле сме отишли
  62. if (field[squirrelRow][squirrelCol] == 't') {
  63. //trap
  64. isTrap = true;
  65. System.out.println("Unfortunately, the squirrel stepped on a trap...");
  66. break;
  67. } else if (field[squirrelRow][squirrelCol] == 'h') {
  68. hazelnuts++;
  69. field[squirrelRow][squirrelCol] = 's';
  70. }
  71. } else {
  72. //извън матрицата
  73. isTrap = true;
  74. System.out.println("The squirrel is out of the field.");
  75. break;
  76. }
  77. } else if (direction.equals("up")) {//ред - 1
  78. //1. проверка дали там където отиваме е вътре в матрицата
  79. if (isInside(squirrelRow - 1, size)) {
  80. //можем да се движим -> местим катерицата
  81. squirrelRow -= 1;
  82. //проверка на какво поле сме отишли
  83. if (field[squirrelRow][squirrelCol] == 't') {
  84. //trap
  85. isTrap = true;
  86. System.out.println("Unfortunately, the squirrel stepped on a trap...");
  87. break;
  88. } else if (field[squirrelRow][squirrelCol] == 'h') {
  89. hazelnuts++;
  90. field[squirrelRow][squirrelCol] = 's';
  91. }
  92. } else {
  93. //извън матрицата
  94. isTrap = true;
  95. System.out.println("The squirrel is out of the field.");
  96. break;
  97. }
  98. } else if (direction.equals("down")) {//ред + 1
  99. //1. проверка дали там където отиваме е вътре в матрицата
  100. if (isInside(squirrelRow + 1, size)) {
  101. //можем да се движим -> местим катерицата
  102. squirrelRow += 1;
  103. //проверка на какво поле сме отишли
  104. if (field[squirrelRow][squirrelCol] == 't') {
  105. //trap
  106. isTrap = true;
  107. System.out.println("Unfortunately, the squirrel stepped on a trap...");
  108. break;
  109. } else if (field[squirrelRow][squirrelCol] == 'h') {
  110. hazelnuts++;
  111. field[squirrelRow][squirrelCol] = 's';
  112. }
  113. } else {
  114. //извън матрицата
  115. isTrap = true;
  116. System.out.println("The squirrel is out of the field.");
  117. break;
  118. }
  119. }
  120.  
  121. if (hazelnuts == 3) {
  122. System.out.println("Good job! You have collected all hazelnuts!");
  123. break;
  124. }
  125. }
  126.  
  127. if (hazelnuts >= 3 || isTrap) {
  128. System.out.println("Hazelnuts collected: " + hazelnuts);
  129. } else if (!isTrap){
  130. //isTrap
  131. //true -> капан или извън матрицата
  132. //false -> не сме нито в капан и нито извън матрицата
  133. //прекъснали цикъла и сме минали през всички посоки -> не сме в капан или извън матрицата, не сме събрали лешниците
  134. System.out.println("There are more hazelnuts to collect.");
  135. System.out.println("Hazelnuts collected: " + hazelnuts);
  136. }
  137.  
  138.  
  139. }
  140.  
  141. private static char[][] createMatrix(int size, Scanner scanner) {
  142. //size -> размер на матрицата (size = редове = колони)
  143. char[][] matrix = new char[size][size];
  144. for (int row = 0; row < size; row++) {
  145. char[] rowData = scanner.nextLine().toCharArray();
  146. //Начин 1: matrix[row] = rowData;
  147.  
  148. //Начин 2:
  149. for (int col = 0; col < size; col++) {
  150. char currentSymbol = rowData[col];
  151. matrix[row][col] = currentSymbol;
  152. }
  153. }
  154.  
  155. return matrix;
  156. }
  157.  
  158. private static boolean isInside (int number, int size) {
  159. return number >= 0 && number < size;
  160. }
  161. }
  162.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement