Advertisement
vkarakolev

stringMatrixRotation

Jun 3rd, 2021
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.96 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. public class E06_StringMatrixRotation {
  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.         List<String> elements = new ArrayList<>();
  9.         int degrees = Integer.parseInt(scanner.nextLine().split("[()]")[1]);
  10.  
  11.         int biggestLength = 0;
  12.         String command = scanner.nextLine();
  13.         while (!command.equals("END")){
  14.             elements.add(command);
  15.  
  16.             if(command.length() > biggestLength){
  17.                 biggestLength = command.length();
  18.             }
  19.  
  20.             command = scanner.nextLine();
  21.         }
  22.  
  23.         elements = padMissingElementsWithSpace(elements, biggestLength);
  24.         char[][] matrix = fillMatrix(elements);
  25.         matrix = rotateMatrix(matrix, degrees);
  26.         printMatrix(matrix);
  27.     }
  28.  
  29.     public static char[][] rotateMatrix(char[][] matrix, int degrees) {
  30.         int iterations;
  31.  
  32.         if(degrees > 360){
  33.             iterations = (degrees % 360) / 90;
  34.         } else {
  35.             iterations = degrees / 90;
  36.         }
  37.  
  38.         for (int i = 0; i < iterations; i++) {
  39.             matrix = rotateMatrixOn90Degrees(matrix);
  40.         }
  41.  
  42.         return matrix;
  43.     }
  44.  
  45.     public static char[][] rotateMatrixOn90Degrees(char[][] matrix) {
  46.         char[][] rotated = new char[matrix[0].length][matrix.length];
  47.  
  48.         for (int row = 0; row < rotated.length; row++) {
  49.             int newElementRow = matrix.length - 1;
  50.  
  51.             for (int col = 0; col < rotated[0].length; col++) {
  52.                 rotated[row][col] = matrix[newElementRow][row];
  53.                 newElementRow--;
  54.             }
  55.         }
  56.  
  57.         return rotated;
  58.     }
  59.  
  60.     public static void printMatrix (char[][] matrix) {
  61.         for (char[] row : matrix) {
  62.             for (char col : row) {
  63.                 System.out.print(col);
  64.             }
  65.             System.out.println();
  66.         }
  67.     }
  68.  
  69.     public static char[][] fillMatrix(List<String> list) {
  70.         int rows = list.size();
  71.         int cols = list.get(0).length();
  72.         char[][] matrix = new char[rows][cols];
  73.  
  74.         for (int row = 0; row < rows; row++) {
  75.             String word = list.get(row);
  76.             for (int col = 0; col < cols; col++) {
  77.                 matrix[row][col] = word.split("")[col].charAt(0);
  78.             }
  79.         }
  80.  
  81.         return matrix;
  82.     }
  83.  
  84.     public static List<String> padMissingElementsWithSpace(List<String> list, int length) {
  85.         for (int i = 0; i < list.size(); i++) {
  86.             String element = list.get(i);
  87.  
  88.             if(element.length() < length){
  89.                 int diff = length - element.length();
  90.                 StringBuilder newElement = new StringBuilder();
  91.                 newElement.append(element);
  92.                 newElement.append(" ".repeat(diff));
  93.                 list.set(i, String.valueOf(newElement));
  94.             }
  95.         }
  96.  
  97.         return list;
  98.     }
  99. }
  100.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement