Advertisement
desislava_topuzakova

5.Matrix Shuffling

Jan 15th, 2024
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. package javaAdv;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Scanner;
  5.  
  6. public class MatrixShuffling_05 {
  7. public static void main(String[] args) {
  8. Scanner scanner = new Scanner(System.in);
  9. int [] dimensions = Arrays.stream(scanner.nextLine().split(" "))
  10. .mapToInt(Integer::parseInt)
  11. .toArray(); //[4, 5]
  12. int rows = dimensions[0]; //брой редове
  13. int cols = dimensions[1]; //брой колони
  14. String [][] matrix = new String[rows][cols];
  15. fillMatrix(matrix, scanner);
  16.  
  17. String command = scanner.nextLine();
  18.  
  19. while (!"END".equals(command)) {
  20. //command = "swap 1 2 2 3".split(" ") -> ["swap", "1", "2", "2", "3"]
  21. //размяна на елемент[1][2] с елемент[2][3]
  22. String[] commandParts = command.split("\\s+"); //["swap", "1", "2", "2", "3"]
  23.  
  24. //валидираме командата
  25. if (validateCommand(commandParts, rows, cols)) {
  26. int rowFirstElement = Integer.parseInt(commandParts[1]); //ред на първия елемент
  27. int colFirstElement = Integer.parseInt(commandParts[2]); //колона на първия елемент
  28.  
  29. int rowSecondElement = Integer.parseInt(commandParts[3]); //ред на втория елемент
  30. int colSecondElement = Integer.parseInt(commandParts[4]); //колона на втория елемент
  31.  
  32. String firstElement = matrix[rowFirstElement][colFirstElement]; //първия елемент за размяна
  33. String secondElement = matrix[rowSecondElement][colSecondElement]; //втория елемент за размяна
  34.  
  35. //размяна
  36. matrix[rowFirstElement][colFirstElement] = secondElement;
  37. matrix[rowSecondElement][colSecondElement] = firstElement;
  38.  
  39. //отпечаваме матрицата с разменени елементи
  40. printMatrix(matrix);
  41. } else {
  42. System.out.println("Invalid input!");
  43. }
  44.  
  45. command = scanner.nextLine();
  46. }
  47. }
  48.  
  49. //true -> ако командата е валидна
  50. //false -> ако командата не е валидна
  51. private static boolean validateCommand(String[] commandParts, int rows, int cols) {
  52. //command = "swap 1 2 2 3".split(" ") -> commandParts = ["swap", "1", "2", "2", "3"]
  53. //1. брой на частите на командата
  54. if (commandParts.length != 5) {
  55. return false;
  56. }
  57.  
  58. //2. започва с думата swap
  59. if (!"swap".equals(commandParts[0])) {
  60. return false;
  61. }
  62.  
  63. //3. дали редовете и колоните са валидни
  64. int rowFirstElement = Integer.parseInt(commandParts[1]); //ред на първия елемент -> >= 0 и < бр.редове
  65. int colFirstElement = Integer.parseInt(commandParts[2]); //колона на първия елемент -> >= 0 и < бр. колони
  66. int rowSecondElement = Integer.parseInt(commandParts[3]); //ред на втория елемент -> >= 0 и < бр.редове
  67. int colSecondElement = Integer.parseInt(commandParts[4]); //колона на втория елемент -> >= 0 и < бр. колони
  68.  
  69. if (rowFirstElement >= 0 && rowFirstElement < rows && rowSecondElement >= 0 && rowSecondElement < rows
  70. && colFirstElement >= 0 && colFirstElement < cols && colSecondElement >= 0 && colSecondElement < cols) {
  71. //валидни редове и колони
  72. return true;
  73. } else {
  74. //невалидни редове и колони
  75. return false;
  76. }
  77. }
  78.  
  79. private static void printMatrix(String[][] matrix) {
  80. for (String [] row : matrix) {
  81. for (String element : row) {
  82. System.out.print(element + " ");
  83. }
  84. System.out.println();
  85. }
  86. }
  87.  
  88. private static void fillMatrix(String[][] matrix, Scanner scanner) {
  89. for (int row = 0; row < matrix.length; row++) {
  90. matrix[row] = scanner.nextLine().split("\\s+");
  91. }
  92. }
  93. }
  94.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement