Advertisement
Ligh7_of_H3av3n

08. Wrong Measurements

May 17th, 2024
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.54 KB | None | 0 0
  1. package Lekciq;
  2.  
  3. import java.util.Arrays;
  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.  
  11.         int rows = Integer.parseInt(scanner.nextLine());
  12.         int[][] matrix = inputMatrix(scanner, rows, "\\s+");
  13.         int[] indexes = Arrays.stream(scanner.nextLine().split("\\s+"))
  14.                 .mapToInt(Integer::parseInt)
  15.                 .toArray();
  16.         int number = matrix[indexes[0]][indexes[1]];
  17.         int[][] outputMatrix = fixMatrix(matrix, number);
  18.         printMatrix(outputMatrix);
  19.     }
  20.  
  21.     private static int[][] fixMatrix(int[][] matrix, int number) {
  22.         int[][] outputMatrix = new int[matrix.length][];
  23.         for (int row = 0; row < matrix.length; row++) {
  24.             outputMatrix[row] = new int[matrix[row].length];
  25.             for (int col = 0; col < matrix[row].length; col++) {
  26.                 if (matrix[row][col] == number) {
  27.                     int sum = calculateSum(matrix, row, col, number);
  28.                     outputMatrix[row][col] = sum;
  29.                 } else {
  30.                     outputMatrix[row][col] = matrix[row][col];
  31.                 }
  32.             }
  33.         }
  34.         return outputMatrix;
  35.     }
  36.  
  37.     private static int calculateSum(int[][] matrix, int row, int col, int number) {
  38.         int sum = 0;
  39.         int[][] directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
  40.         for (int[] dir : directions) {
  41.             int newRow = row + dir[0];
  42.             int newCol = col + dir[1];
  43.             if (isValid(newRow, newCol, matrix.length, matrix[0].length) && matrix[newRow][newCol] != number) {
  44.                 sum += matrix[newRow][newCol];
  45.             }
  46.         }
  47.         return sum;
  48.     }
  49.  
  50.     private static boolean isValid(int row, int col, int numRows, int numCols) {
  51.         return row >= 0 && row < numRows && col >= 0 && col < numCols;
  52.     }
  53.  
  54.     private static void printMatrix(int[][] outputMatrix) {
  55.         for (int[] row : outputMatrix) {
  56.             for (int num : row) {
  57.                 System.out.print(num + " ");
  58.             }
  59.             System.out.println();
  60.         }
  61.     }
  62.  
  63.     private static int[][] inputMatrix(Scanner scanner, int rows, String pattern) {
  64.         int[][] matrix = new int[rows][];
  65.         for (int row = 0; row < rows; row++) {
  66.             matrix[row] = Arrays.stream(scanner.nextLine().split(pattern))
  67.                     .mapToInt(Integer::parseInt)
  68.                     .toArray();
  69.         }
  70.         return matrix;
  71.     }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement