fork(1) download
  1. class Main{
  2. public static void main (String[] args) throws java.lang.Exception
  3. {
  4. System.out.println(cifra(3, "INVIO RINFORZI DOMANI"));
  5. System.out.println(decifra(3, "IIIOIMI\t\nNONRDAVRFZON"));
  6. }
  7.  
  8. public static String cifra(int key, String messaggio) {
  9. int c = key;
  10. String output = "";
  11.  
  12.  
  13.  
  14.  
  15. messaggio = messaggio.replaceAll("\\s", "");
  16.  
  17.  
  18.  
  19.  
  20. int r = messaggio.length()/c;
  21. if (messaggio.length()%c != 0){
  22. r++;
  23. }
  24. int pos = 0;
  25.  
  26. char[][] M = new char [r][c];
  27. for (int i = 0; i < r; i++) {
  28. for (int j = 0; j < c; j++) {
  29. if (pos == messaggio.length())
  30. break;
  31. M[i][j] = messaggio.charAt(pos);
  32. pos++;
  33. }
  34. }
  35.  
  36. for (int i = 0; i < c; i++) {
  37. for (int j = 0; j < r; j++) {
  38. if(M[j][i] != 0)
  39. output += M[j][i];
  40. }
  41. }
  42. return output;
  43. }
  44.  
  45. public static String decifra(int key, String messaggio) {
  46. int c = key;
  47. String output = "";
  48.  
  49.  
  50.  
  51.  
  52. messaggio = messaggio.replaceAll("\\s", "");
  53.  
  54.  
  55.  
  56.  
  57. int r = messaggio.length()/c;
  58. int eccesso = messaggio.length()%c;
  59. if (eccesso != 0){
  60. r++;
  61. }
  62. int pos = 0;
  63.  
  64. char[][] M = new char [r][c];
  65. for (int j = 0; j < c; j++) {
  66. for (int i = 0; i < r; i++) {
  67. if (pos == messaggio.length())
  68. break;
  69. if((eccesso != 0) && (i == r-1) && (j >= eccesso)){
  70. continue;
  71. }
  72. M[i][j] = messaggio.charAt(pos);
  73. pos++;
  74. }
  75. }
  76.  
  77. for (int i = 0; i < r; i++) {
  78. for (int j = 0; j < c; j++) {
  79. if(M[i][j]!= 0)
  80. output += M[i][j];
  81. }
  82. }
  83. return output;
  84. }
  85. }
Success #stdin #stdout 0.07s 380224KB
stdin
Standard input is empty
stdout
IIIOIMINONRDAVRFZON
INVIORINFORZIDOMANI