Advertisement
IvaAnd

Untitled

Sep 29th, 2020
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.81 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import java.util.Scanner;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7. import java.util.stream.Collectors;
  8.  
  9.  
  10. public class Ex06_StringMatrixRotation {
  11. public static void main(String[] args) {
  12.  
  13. Scanner scanner = new Scanner(System.in);
  14.  
  15. int degrees = getDegrees(scanner);
  16.  
  17. List<List<String>> matrix = new ArrayList<>();
  18.  
  19. fillTheMatrix(scanner, matrix);
  20.  
  21. int size = matrix.size();
  22.  
  23. String[][] matrix90i270 = new String[matrix.get(0).size()][size];
  24. String[][] matrix0i180 = new String[size][matrix.get(0).size()];
  25.  
  26.  
  27. if (degrees / 4 == 90 || degrees / 8 == 90) {
  28. //matrix0i180;
  29.  
  30. } else if (degrees == 90 || degrees / 5 == 90 || degrees / 9 == 90) {
  31. // matrix90i270;
  32. rotate90and450and900degrees(matrix, matrix90i270);
  33.  
  34. //for (int col = 0; col < matrix.get(0).size(); col++) {
  35. // for (int row = 0; row < matrix.size(); row++) {
  36. // String curr = matrix.get(matrix.size()-1-row).get(col);
  37. //
  38.  
  39. //
  40. // matrix90i270[col][row]= curr;
  41. // }
  42.  
  43. printMatrix(matrix90i270);
  44.  
  45. } else if (degrees / 3 == 90 || degrees / 7 == 90) {
  46. // matrix90i270;
  47. for (int col = 0; col < matrix.get(0).size(); col++) {
  48. for (int row = 0; row < matrix.size(); row++) {
  49. //String curr = matrix.get(matrix.size()-1-row).get(col);
  50.  
  51. //int innerIndex = matrix.get(0).size()-1-row;
  52. String curr = matrix.get(0).get(size()-1);
  53.  
  54. // matrix.get(matrix.size() - 1 - row).get(col);
  55.  
  56. matrix90i270[col][row]= curr;
  57. }
  58. }
  59.  
  60. printMatrix(matrix90i270);
  61. }
  62.  
  63.  
  64. }
  65.  
  66. public static void printMatrix(String[][] matrix) {
  67. for (String[] currArray : matrix) {
  68. System.out.println(String.join("", currArray));
  69.  
  70. }
  71. }
  72.  
  73. public static void rotate90and450and900degrees(List<List<String>> matrix, String[][] matrix90i270) {
  74. for (int col = 0; col < matrix.get(0).size(); col++) {
  75. for (int row = 0; row < matrix.size(); row++) {
  76. String curr = matrix.get(matrix.size() - 1 - row).get(col);
  77.  
  78. // int length1 = matrix90i270.length;
  79. // int length2 = matrix0i180.length;
  80.  
  81. matrix90i270[col][row] = curr;
  82. }
  83. }
  84.  
  85. }
  86.  
  87. public static void fillTheMatrix(Scanner scanner, List<List<String>> matrix) {
  88. String input = scanner.nextLine();
  89. int maxChars = 0;
  90. while (!input.equals("END")) {
  91.  
  92. List<String> arr = Arrays.stream(input.split("")).collect(Collectors.toList());
  93.  
  94. matrix.add(arr);
  95.  
  96. int countChars = arr.size();
  97.  
  98. if (countChars > maxChars) {
  99. maxChars = countChars;
  100. }
  101.  
  102. input = scanner.nextLine();
  103. }
  104. for (List<String> currList : matrix) {
  105. for (int i = currList.size(); i < maxChars; i++) {
  106. currList.add(" ");
  107. }
  108.  
  109. }
  110.  
  111. }
  112.  
  113. public static int getDegrees(Scanner scanner) {
  114. String input = scanner.nextLine();
  115. String regex = "(?<rotate>[A-za-z]*)\\((?<degrees>[0-90-9]*?)\\)";
  116. Pattern pattern = Pattern.compile(regex);
  117. Matcher matcher = pattern.matcher(input);
  118. int degrees = 0;
  119.  
  120. while (matcher.find()) {
  121. String result = matcher.group("degrees");
  122. degrees = Integer.parseInt(result);
  123. }
  124. return degrees;
  125. }
  126. }
  127.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement