Advertisement
Chaosfirebolt

Telescopic Matrix

Dec 29th, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.08 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. /**
  6.  * Created by ChaosFire on 29.12.2017 г.
  7.  */
  8. public class TelescopicMatrix {
  9.  
  10.     public static void main(String[] args) throws IOException {
  11.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  12.         int size = Integer.parseInt(reader.readLine());
  13.         int[][] matrix = readMatrix(size, reader);
  14.         reader.close();
  15.         System.out.println(isTelescopic(matrix, size));
  16.     }
  17.  
  18.     private static boolean isTelescopic(int[][] matrix, int size) {
  19.         int value = 1;//layer value
  20.         int layerCount = size / 2;//layer count, center, if it exists, is not included as a layer
  21.         for (int i = 0; i < layerCount; i++) {
  22.             int x = i;
  23.             int y = i;
  24.             while (y < size - 1 - i) {//go right
  25.                 if (matrix[x][y] != value) {
  26.                     return false;
  27.                 }
  28.                 y++;
  29.             }
  30.             while (x < size - 1 - i) {//go down
  31.                 if (matrix[x][y] != value) {
  32.                     return false;
  33.                 }
  34.                 x++;
  35.             }
  36.             while (y > i) {//go left
  37.                 if (matrix[x][y] != value) {
  38.                     return false;
  39.                 }
  40.                 y--;
  41.             }
  42.             while (x > i) {//go up
  43.                 if (matrix[x][y] != value) {
  44.                     return false;
  45.                 }
  46.                 x--;
  47.             }
  48.             value++;
  49.         }
  50.         return size % 2 == 0 || matrix[layerCount][layerCount] == value;//check center, if there is such, and return answer
  51.     }
  52.  
  53.     private static int[][] readMatrix(int size, BufferedReader reader) throws IOException {
  54.         int[][] matrix = new int[size][size];
  55.         for (int i = 0; i < size; i++) {
  56.             String[] row = reader.readLine().split("\\s+");
  57.             for (int j = 0; j < size; j++) {
  58.                 matrix[i][j] = Integer.parseInt(row[j]);
  59.             }
  60.         }
  61.         return matrix;
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement