Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.52 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. public class Crossfire {
  6.  
  7.     public static void main(String[] args) {
  8.  
  9.         Scanner in = new Scanner(System.in);
  10.  
  11.         String[] input = in.nextLine().split(" ");
  12.  
  13.         // FILL MATRIX
  14.  
  15.         int rows = Integer.parseInt(input[0]);
  16.         int cols = Integer.parseInt(input[1]);
  17.  
  18.         int[][] matrix = new int[rows][cols];
  19.         int number = 0;
  20.  
  21.         for (int i = 0; i < rows; i++) {
  22.             for (int j = 0; j < cols; j++) {
  23.                 number++;
  24.                 matrix[i][j] = number;
  25.             }
  26.         }
  27.  
  28.         // CROSSFIRE
  29.  
  30.         String line = in.nextLine();
  31.  
  32.         while (!line.equals("Nuke it from orbit")) {
  33.  
  34.             String[] crossfire = line.split(" ");
  35.  
  36.             int cfrow = Integer.parseInt(crossfire[0]);
  37.             int cfcol = Integer.parseInt(crossfire[1]);
  38.             int cfrange = Integer.parseInt(crossfire[2]);
  39.  
  40.             int[][] newMatrix = cfblast(matrix, cfrow, cfcol, cfrange);
  41.  
  42.             matrix = newMatrix.clone();
  43.  
  44.             line = in.nextLine();
  45.         }
  46.  
  47.         for (int i = 0; i < matrix.length; i++) {
  48.             for (int j = 0; j < matrix[i].length; j++) {
  49.                 if (matrix[i][j] != 0) {
  50.                     System.out.print(matrix[i][j] + " ");
  51.                 }
  52.             }
  53.             System.out.println();
  54.         }
  55.  
  56.     }
  57.  
  58.     private static int[][] cfblast(int[][] matrix, int cfrow, int cfcol, int cfrange) {
  59.  
  60.         // HORIZONTAL BLAST
  61.  
  62.         for (int col = Math.max(0, cfcol - cfrange); col < Math.min(matrix[0].length, cfcol + cfrange + 1); col++) {
  63.             matrix[cfrow][col] = 0;
  64.         }
  65.  
  66.         // VERTICAL BLAST
  67.  
  68.         for (int row = Math.max(0, cfrow - cfrange); row < Math.min(matrix.length, cfrow + cfrange + 1); row++) {
  69.             matrix[row][cfcol] = 0;
  70.         }
  71.  
  72.         for (int i = 0; i < matrix.length; i++) {
  73.             List<Integer> line = new ArrayList<>();
  74.             int zerosCount = 0;
  75.             for (int j = 0; j < matrix[i].length; j++) {
  76.                 if (matrix[i][j] != 0) {
  77.                     line.add(matrix[i][j]);
  78.                 } else {
  79.                     zerosCount++;
  80.                 }
  81.             }
  82.  
  83.             for (int j = 0; j < zerosCount; j++) {
  84.                 line.add(0);
  85.             }
  86.  
  87.             int[] lineArr = line.stream().mapToInt(Integer::intValue).toArray();
  88.             matrix[i] = lineArr;
  89.         }
  90.  
  91.         return matrix;
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement