Advertisement
Guest User

Untitled

a guest
Jan 24th, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.65 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. public class Ex07Crossfire {
  8.     private static BufferedReader reader;
  9.     private static List<List<Integer>> matrix;
  10.     private static int rows, cols;
  11.  
  12.     static {
  13.         reader = new BufferedReader(new InputStreamReader(System.in));
  14.         matrix = new ArrayList<>();
  15.     }
  16.  
  17.     @SuppressWarnings("Duplicates")
  18.     public static void main(String[] args) throws IOException {
  19.         getDimensions();
  20.  
  21.         String input;
  22.         while (! "Nuke it from orbit".equals(input = reader.readLine())) {
  23.             String[] tokens = input.split("\\s+");
  24.             int targetRow = Integer.parseInt(tokens[0]);
  25.             int targetCol = Integer.parseInt(tokens[1]);
  26.             int radius = Integer.parseInt(tokens[2]);
  27.  
  28.             int rowStart = Math.max(0, targetRow - radius);
  29.             int rowEnd = Math.min(rows - 1, targetRow + radius);
  30.             int colStart = Math.max(0, targetCol - radius);
  31.             int colEnd = Math.min(cols - 1, targetCol + radius);
  32.  
  33.             for (int col = colStart; col <= colEnd; col++) {
  34.                 if (inRange(targetRow, col)) {
  35.                     matrix.get(targetRow).set(col, 0);
  36.                 }
  37.             }
  38.  
  39.             for (int row = rowStart; row <= rowEnd; row++) {
  40.                 if (inRange(row, targetCol)) {
  41.                     matrix.get(row).set(targetCol, 0);
  42.                 }
  43.             }
  44.  
  45.             matrix.forEach(row -> row.removeIf(value -> value == 0));
  46.             matrix.removeIf(List::isEmpty);
  47.         }
  48.  
  49.         System.out.println(getMatrixString());
  50.     }
  51.  
  52.     private static String getMatrixString() {
  53.         StringBuilder output = new StringBuilder();
  54.         for (List<Integer> row : matrix) {
  55.             output.append(row.toString().replaceAll("[\\[\\],]", ""));
  56.             output.append(System.lineSeparator());
  57.         }
  58.         return output.toString();
  59.     }
  60.  
  61.     private static boolean inRange(int row, int col) {
  62.         return row >= 0 && row < matrix.size() &&
  63.                 col >= 0 && col < matrix.get(row).size();
  64.     }
  65.  
  66.     private static void getDimensions() throws IOException {
  67.         String[] dimension = reader.readLine().split("\\s+");
  68.         rows = Integer.parseInt(dimension[0]);
  69.         cols = Integer.parseInt(dimension[1]);
  70.  
  71.         int filler = 1;
  72.         for (int row = 0; row < rows; row++) {
  73.             matrix.add(new ArrayList<>());
  74.             for (int col = 0; col < cols; col++) {
  75.                 matrix.get(row).add(filler++);
  76.             }
  77.         }
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement