Didart

String Matrix Rotation

Jan 14th, 2023
572
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.01 KB | None | 0 0
  1. package MultidimensionalArrays2;
  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.         String[] command = scanner.nextLine().split("[()]");
  12.         int degrees = Integer.parseInt(command[1]);
  13.  
  14.         List<String> inputs = new ArrayList<>();
  15.         String input;
  16.         int longestString = 0;
  17.         while (!"END".equals(input = scanner.nextLine())) {
  18.             inputs.add(input);
  19.             if (longestString < input.length()) {
  20.                 longestString = input.length();
  21.             }
  22.         }
  23.  
  24.         char[][] matrix = new char[inputs.size()][longestString];
  25.         int row = 0;
  26.         for (String currentInput : inputs) {
  27.             int index = 0;
  28.             for (index = 0; index < currentInput.length(); index++) {
  29.                 matrix[row][index] = currentInput.charAt(index);
  30.             }
  31.             for (int i = index; i < matrix[row].length; i++) {
  32.                 matrix[row][i] = ' ';
  33.             }
  34.             row++;
  35.         }
  36.         printMatrix(flip(matrix, degrees));
  37.     }
  38.  
  39.     static char[][] flip90(char[][] matrix) { // works
  40.         char[][] flippedMatrix = new char[matrix[0].length][matrix.length];
  41.  
  42.         for (int i = 0; i < flippedMatrix.length; i++) {
  43.             for (int j = 0; j < flippedMatrix[0].length; j++) {
  44.                 flippedMatrix[i][j] = matrix[matrix.length - 1 - j][i];
  45.             }
  46.         }
  47.         return flippedMatrix;
  48.     }
  49.  
  50.     static char[][] flip180(char[][] matrix) {
  51.         char[][] flippedMatrix = new char[matrix.length][matrix[0].length];
  52.  
  53.         for (int i = 0; i < flippedMatrix.length; i++) {
  54.             for (int j = 0; j < flippedMatrix[0].length; j++) {
  55.                 flippedMatrix[i][j] = matrix[matrix.length - 1 - i][matrix[0].length - 1 - j];
  56.             }
  57.         }
  58.         return flippedMatrix;
  59.     }
  60.  
  61.     static char[][] flip270(char[][] matrix) {
  62.         char[][] flippedMatrix = new char[matrix[0].length][matrix.length];
  63.  
  64.         for (int i = 0; i < flippedMatrix.length; i++) {
  65.             for (int j = 0; j < flippedMatrix[0].length; j++) {
  66.                 flippedMatrix[i][j] = matrix[j][matrix[0].length - 1 - i];
  67.             }
  68.         }
  69.         return flippedMatrix;
  70.     }
  71.  
  72.     static char[][] flip(char[][] matrix, int degrees) {
  73.         degrees %= 360;
  74.         if (degrees == 90) {
  75.             return flip90(matrix);
  76.         } else if (degrees == 180) {
  77.             return flip180(matrix);
  78.         } else if (degrees == 270) {
  79.             return flip270(matrix);
  80.         } else {
  81.             return matrix;
  82.         }
  83.     }
  84.  
  85.     static void printMatrix(char[][] matrix) {
  86.         for (int row = 0; row < matrix.length; row++) {
  87.             for (int col = 0; col < matrix[0].length; col++) {
  88.                 System.out.print(matrix[row][col]);
  89.             }
  90.             System.out.println();
  91.         }
  92.     }
  93. }
  94.  
  95.  
  96.  
Advertisement
Add Comment
Please, Sign In to add comment