Advertisement
damesova

String Matrix Rotation [Mimi][JA]

May 27th, 2019
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.87 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. public class _06_StringMatrixRotation {
  6.     public static void main(String[] args) {
  7.         Scanner sc = new Scanner(System.in);
  8.  
  9.         String[] cmd = sc.nextLine().split("[()]");
  10.         int degree = Integer.parseInt(cmd[1]) % 360;
  11.         List<String> words = new ArrayList<>();
  12.         String input = "";
  13.  
  14.         int maxLength = 0;
  15.         while (!"END".equals(input = sc.nextLine())) {
  16.             words.add(input);
  17.             if (input.length() > maxLength) {
  18.                 maxLength = input.length();
  19.             }
  20.         }
  21.  
  22.         char[][] matrix = new char[words.size()][maxLength];
  23.         for (int i = 0; i < matrix.length; i++) {
  24.             for (int j = 0; j < maxLength; j++) {
  25.                 if (words.get(i).length() <= j) {
  26.                     matrix[i][j] = ' ';
  27.                 } else {
  28.                     matrix[i][j] = words.get(i).charAt(j);
  29.                 }
  30.             }
  31.         }
  32.         if (degree == 90) {
  33.             printMatrix(rotate90(matrix));
  34.  
  35.         } else if (degree == 180) {
  36.             printMatrix(rotate180(matrix));
  37.         } else if (degree == 270) {
  38.             printMatrix(rotate270(matrix));
  39.         } else {
  40.             printMatrix(matrix);
  41.         }
  42.     }
  43.  
  44.     private static char[][] rotate270(char[][] matrix) {
  45.         int rowsRotMatrix = matrix[0].length;
  46.         int colsRotMatrix = matrix.length;
  47.         char[][] rotMatrix = new char[rowsRotMatrix][colsRotMatrix];
  48.         for (int i = 0; i < matrix.length; i++) {
  49.             for (int j = 0; j < matrix[0].length; j++) {
  50.                 rotMatrix[(rowsRotMatrix - 1) - j][i] = matrix[i][j];
  51.             }
  52.         }
  53.         return rotMatrix;
  54.     }
  55.  
  56.     private static char[][] rotate180(char[][] matrix) {
  57.         char[][] rotMatrix = new char[matrix.length][matrix[0].length];
  58.         for (int i = matrix.length - 1; i >= 0; i--) {
  59.             for (int j = 0; j < matrix[0].length; j++) {
  60.                 rotMatrix[i][j] = matrix[matrix.length - i - 1][matrix[0].length - j - 1];
  61.             }
  62.         }
  63.  
  64.         return rotMatrix;
  65.     }
  66.  
  67.     private static char[][] rotate90(char[][] matrix) {
  68.         int rowsRotMatrix = matrix[0].length;
  69.         int colsRotMatrix = matrix.length;
  70.         char[][] rotMatrix = new char[rowsRotMatrix][colsRotMatrix];
  71.         for (int i = 0; i < colsRotMatrix; i++) {
  72.             for (int j = 0; j < rowsRotMatrix; j++) {
  73.                 rotMatrix[j][(colsRotMatrix - 1) - i] = matrix[i][j];
  74.             }
  75.         }
  76.  
  77.         return rotMatrix;
  78.     }
  79.  
  80.     private static void printMatrix(char[][] matrix) {
  81.         for (int i = 0; i < matrix.length; i++) {
  82.             for (int j = 0; j < matrix[i].length; j++) {
  83.                 System.out.print(matrix[i][j]);
  84.             }
  85.             System.out.println();
  86.         }
  87.     }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement