borovaneca

StringMatrixRotation

Feb 6th, 2023
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.75 KB | None | 0 0
  1. package Advance.Matrices.Exercise;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Scanner;
  6.  
  7. public class StringMatrixRotation {
  8.     public static void main(String[] args) {
  9.         Scanner scanner = new Scanner(System.in);
  10.  
  11.  
  12.         String input = scanner.nextLine().split("[()]")[1];
  13.  
  14.         int degrees = Integer.parseInt(input);
  15.  
  16.  
  17.         int rotation = degrees % 360;
  18.  
  19.         String command = scanner.nextLine();
  20.  
  21.         int longest = 0;
  22.         List<String> inputList = new ArrayList<>();
  23.         while (!command.equals("END")) {
  24.             inputList.add(command);
  25.             if (command.length() > longest) {
  26.                 longest = command.length();
  27.             }
  28.             command = scanner.nextLine();
  29.         }
  30.  
  31.         char[][] matrix = new char[inputList.size()][longest];
  32.  
  33.         for (int i = 0; i < matrix.length; i++) {
  34.             for (int j = 0; j < matrix[i].length; j++) {
  35.                 if (j > inputList.get(i).length() - 1) {
  36.                     matrix[i][j] = ' ';
  37.                 } else {
  38.                     matrix[i][j] = inputList.get(i).charAt(j);
  39.                 }
  40.             }
  41.         }
  42.  
  43.         // ----------------------rotation-------------
  44.  
  45.         switch (rotation) {
  46.             case 0:
  47.                 for (int row = 0; row < matrix.length; row++) {
  48.                     for (int cols = 0; cols < matrix[row].length; cols++) {
  49.                         System.out.printf("%c", matrix[row][cols]);
  50.                     }
  51.                     System.out.println();
  52.                 }
  53.                 break;
  54.             case 90: {
  55.                 char[][] newMatrix = new char[longest][matrix.length];
  56.                 int oldRow = matrix.length - 1;
  57.                 int oldIndex = 0;
  58.                 for (int row = 0; row < newMatrix.length; row++) {
  59.                     for (int cols = 0; cols < newMatrix[row].length; cols++) {
  60.                         newMatrix[row][cols] = matrix[oldRow][oldIndex];
  61.                         oldRow--;
  62.                     }
  63.                     oldRow = matrix.length - 1;
  64.                     oldIndex++;
  65.                 }
  66.                 printMatrix(newMatrix);
  67.             }
  68.                 break;
  69.  
  70.             case 180: {
  71.                 char[][] newMatrix = new char[matrix.length][longest];
  72.                 int oldRow = matrix.length - 1;
  73.                 int oldIndex = 0;
  74.                 for (int row = 0; row < newMatrix.length; row++) {
  75.                     for (int cols = matrix[row].length - 1; cols >= 0; cols--) {
  76.                         newMatrix[row][cols] = matrix[oldRow][oldIndex];
  77.                         oldIndex++;
  78.                     }
  79.                     oldRow--;
  80.                     oldIndex = 0;
  81.                 }
  82.                 printMatrix(newMatrix); }
  83.                 break;
  84.  
  85.             case 270: {
  86.                 char[][] newMatrix = new char[longest][matrix.length];
  87.                 int oldRow = 0;
  88.                 int oldIndex = longest - 1;
  89.                 for (int row = 0; row < newMatrix.length; row++) {
  90.                     for (int cols = 0; cols < newMatrix[row].length; cols++) {
  91.                         newMatrix[row][cols] = matrix[oldRow][oldIndex];
  92.                         oldRow++;
  93.                     }
  94.                     oldRow = 0;
  95.                     oldIndex--;
  96.                 }
  97.                 printMatrix(newMatrix);
  98.             }
  99.                 break;
  100.         }
  101.     }
  102.  
  103.  
  104.     private static void printMatrix(char[][] matrix) {
  105.         for (int row = 0; row < matrix.length; row++) {
  106.             for (int cols = 0; cols < matrix[row].length; cols++) {
  107.                 System.out.printf("%c", matrix[row][cols]);
  108.             }
  109.             System.out.println();
  110.         }
  111.     }
  112. }
  113.  
Advertisement
Add Comment
Please, Sign In to add comment