Source code for submission s703

Main.java

  1.  
  2. import java.util.Scanner;
  3.  
  4. /**
  5.  *
  6.  * @author cteam049
  7.  */
  8. public class Main {
  9.  
  10. enum Morse {
  11. A(".-"),
  12. B("-..."),
  13. C("-.-."),
  14. D("-.."),
  15. E("."),
  16. F("..-."),
  17. G("--."),
  18. H("...."),
  19. I(".."),
  20. J(".---"),
  21. K("-.-"),
  22. L(".-.."),
  23. M("--"),
  24. N("-."),
  25. O("---"),
  26. P(".--."),
  27. Q("--.-"),
  28. R(".-."),
  29. S("..."),
  30. T("-"),
  31. U("..-"),
  32. V("...-"),
  33. X("-..-"),
  34. W(".--"),
  35. Y("-.--"),
  36. Z("--.."),
  37. u("..--"),
  38. c(".-.-"),
  39. p("---."),
  40. q("----");
  41.  
  42. String sym;
  43. int length;
  44.  
  45. Morse(String sym) {
  46. this.sym = sym;
  47. this.length = sym.length();
  48. }
  49.  
  50. public String getMorse() {
  51. return sym;
  52. }
  53.  
  54. public int getLength() {
  55. return length;
  56. }
  57.  
  58. public static Morse getValue(String sym) {
  59. if (".-".equals(sym)) {
  60. return A;
  61. } else if ("-...".equals(sym)) {
  62. return B;
  63. } else if ("-.-.".equals(sym)) {
  64. return C;
  65. } else if ("-..".equals(sym)) {
  66. return D;
  67. } else if (".".equals(sym)) {
  68. return E;
  69. } else if ("..-.".equals(sym)) {
  70. return F;
  71. } else if ("--.".equals(sym)) {
  72. return G;
  73. } else if ("....".equals(sym)) {
  74. return H;
  75. } else if ("..".equals(sym)) {
  76. return I;
  77. } else if (".---".equals(sym)) {
  78. return J;
  79. } else if ("-.-".equals(sym)) {
  80. return K;
  81. } else if (".-..".equals(sym)) {
  82. return L;
  83. } else if ("--".equals(sym)) {
  84. return M;
  85. } else if ("-.".equals(sym)) {
  86. return N;
  87. } else if ("---".equals(sym)) {
  88. return O;
  89. } else if (".--.".equals(sym)) {
  90. return P;
  91. } else if ("--.-".equals(sym)) {
  92. return Q;
  93. } else if (".-.".equals(sym)) {
  94. return R;
  95. } else if ("...".equals(sym)) {
  96. return S;
  97. } else if ("-".equals(sym)) {
  98. return T;
  99. } else if ("..-".equals(sym)) {
  100. return U;
  101. } else if ("...-".equals(sym)) {
  102. return V;
  103. } else if ("-..-".equals(sym)) {
  104. return X;
  105. } else if (".--".equals(sym)) {
  106. return W;
  107. } else if ("-.--".equals(sym)) {
  108. return Y;
  109. } else if ("--..".equals(sym)) {
  110. return Z;
  111. } else if ("..--".equals(sym)) {
  112. return u;
  113. } else if (".-.-".equals(sym)) {
  114. return c;
  115. } else if ("---.".equals(sym)) {
  116. return p;
  117. } else if ("----".equals(sym)) {
  118. return q;
  119. }
  120. }
  121.  
  122. }
  123.  
  124.  
  125.  
  126. private static String solve(String line) {
  127. String newLine = line.replaceAll("_", "u")
  128. .replaceAll(",", "c")
  129. .replaceAll("\\.", "p")
  130. .replaceAll("\\?", "q");
  131. StringBuilder morseSB = new StringBuilder();
  132. StringBuilder lengthSB = new StringBuilder();
  133.  
  134. for (int i=0; i<newLine.length() ; i++) {
  135. char ch = newLine.charAt(i);
  136. // System.out.println(String.valueOf(ch) + " " + Morse.valueOf(String.valueOf(ch)).getMorse());
  137. morseSB.append(Morse.valueOf(String.valueOf(ch)).getMorse());
  138. lengthSB.append(Morse.valueOf(String.valueOf(ch)).getLength());
  139. }
  140.  
  141.  
  142. String lengthString = lengthSB.reverse().toString();
  143. String morseString = morseSB.toString();
  144.  
  145. // System.out.println("*********");
  146. // System.out.println(morseString);
  147. // System.out.println(lengthString);
  148. // System.out.println("*********");
  149.  
  150. int pointer = 0;
  151. morseSB.delete(0, morseSB.capacity());
  152.  
  153. for (int i=0; i<lengthString.length() ; i++) {
  154. int len = Integer.parseInt( String.valueOf( lengthString.charAt(i) ) );
  155. // System.out.println(morseString.substring(pointer, pointer+len));
  156. // System.out.println( Morse.getValue( morseString.substring(pointer, pointer+len) ) );
  157. morseSB.append( Morse.getValue(morseString.substring(pointer, pointer+len)) );
  158. pointer = pointer+len;
  159. }
  160.  
  161. return morseSB.toString().replaceAll("u", "_")
  162. .replaceAll("c", ",")
  163. .replaceAll("p", "\\.")
  164. .replaceAll("q", "\\?");
  165. }
  166.  
  167. public static void main(String[] args) {
  168. String line = null;
  169. Scanner sc = new Scanner(System.in);
  170. while (sc.hasNext()) {
  171. line = sc.next();
  172. System.out.println(solve(line));
  173. }
  174. }
  175.  
  176. }
  177.