Advertisement
desislava_topuzakova

Untitled

May 29th, 2023
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import java.util.Scanner;
  5.  
  6. public class WrongMeasurements {
  7. public static void main(String[] args) {
  8. Scanner scanner = new Scanner(System.in);
  9.  
  10. int[][] matrix = readMatrix(scanner);
  11. int wrongValue = findWrongValue(matrix, scanner);
  12.  
  13. List<int []> updated = new ArrayList<>();
  14.  
  15. for (int row = 0; row < matrix.length; row++) {
  16. for (int col = 0; col < matrix[row].length; col++) {
  17. if (matrix[row][col] == wrongValue){
  18. updated.add(new int[] {row, col, getClosesItemsSum(row, col, matrix, wrongValue)});
  19. }
  20. }
  21. }
  22.  
  23. for (int[] value: updated){
  24. matrix[value[0]][value[1]] = value[2];
  25. }
  26.  
  27.  
  28. printMatrix(matrix);
  29.  
  30. }
  31.  
  32. private static int getClosesItemsSum(int row, int col, int[][] matrix, int wrongValue) {
  33. int sum = 0;
  34.  
  35. if (row - 1 >= 0 && matrix[row - 1][col] != wrongValue){
  36. sum += matrix[row -1][col]; // UP
  37. };
  38.  
  39. if (row + 1 < matrix.length && matrix[row + 1][col] != wrongValue){
  40. sum += matrix[row + 1][col]; // Down
  41. };
  42.  
  43. if (col - 1 >= 0 && matrix[row][col - 1] != wrongValue){
  44. sum += matrix[row][col - 1]; // Left
  45. };
  46.  
  47. if (col + 1 < matrix[row].length && matrix[row][col + 1] != wrongValue){
  48. sum += matrix[row][col + 1]; // Right
  49. };
  50.  
  51. return sum;
  52. }
  53.  
  54.  
  55. public static int[] readArray(Scanner scanner){
  56. return Arrays.stream(scanner.nextLine().split("\\s+"))
  57. .mapToInt(Integer::parseInt)
  58. .toArray();
  59. }
  60.  
  61. public static int[][] readMatrix(Scanner scanner){
  62. int size = Integer.parseInt(scanner.nextLine());
  63.  
  64. int[][] matrix = new int[size][];
  65.  
  66. for (int row = 0; row < matrix.length; row++) {
  67. matrix[row] = readArray(scanner);
  68. }
  69. return matrix;
  70. }
  71.  
  72. public static int findWrongValue(int[][] matrix, Scanner scanner){
  73. int[] wrongValueCoordinates = Arrays.stream(scanner.nextLine().split("\\s+"))
  74. .mapToInt(Integer::parseInt)
  75. .toArray();
  76.  
  77. int row = wrongValueCoordinates[0];
  78. int col = wrongValueCoordinates[1];
  79.  
  80. return matrix[row][col];
  81. }
  82.  
  83. private static void printMatrix(int[][] matrix) {
  84. for (int[] row : matrix) {
  85. for (int cols : row) {
  86. System.out.print(cols + " ");
  87. }
  88. System.out.println();
  89. }
  90. }
  91.  
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement