Source code for submission s809

fs.java

  1.  
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.logging.Level;
  6. import java.util.logging.Logger;
  7.  
  8. public class fs {
  9.  
  10. public static String decodeMorse(String morse) {
  11. String ret = new String();
  12.  
  13. if(morse.equals(".-"))
  14. ret = "A";
  15.  
  16. if(morse.equals("-..."))
  17. ret = "B";
  18.  
  19. if(morse.equals("-.-."))
  20. ret = "C";
  21.  
  22. if(morse.equals("-.."))
  23. ret = "D";
  24.  
  25. if(morse.equals("."))
  26. ret = "E";
  27.  
  28. if(morse.equals("..-."))
  29. ret = "F";
  30.  
  31. if(morse.equals("--."))
  32. ret = "G";
  33.  
  34. if(morse.equals("...."))
  35. ret = "H";
  36.  
  37. if(morse.equals(".--."))
  38. ret = "P";
  39.  
  40. if(morse.equals(".."))
  41. ret = "I";
  42.  
  43. if(morse.equals(".---"))
  44. ret = "J";
  45.  
  46. if(morse.equals("-.-"))
  47. ret = "K";
  48.  
  49. if(morse.equals(".-.."))
  50. ret = "L";
  51.  
  52. if(morse.equals("--"))
  53. ret = "M";
  54.  
  55. if(morse.equals("-."))
  56. ret = "N";
  57.  
  58. if(morse.equals("---"))
  59. ret = "O";
  60.  
  61. if(morse.equals("--.-"))
  62. ret = "Q";
  63.  
  64. if(morse.equals(".-."))
  65. ret = "R";
  66.  
  67. if(morse.equals("..."))
  68. ret = "S";
  69.  
  70. if(morse.equals("-"))
  71. ret = "T";
  72.  
  73. if(morse.equals("..-"))
  74. ret = "U";
  75.  
  76. if(morse.equals("...-"))
  77. ret = "V";
  78.  
  79. if(morse.equals(".--"))
  80. ret = "W";
  81.  
  82. if(morse.equals("-..-"))
  83. ret = "X";
  84.  
  85. if(morse.equals("-.--"))
  86. ret = "Y";
  87.  
  88. if(morse.equals("--.."))
  89. ret = "Z";
  90.  
  91. if(morse.equals("..--"))
  92. ret = "_";
  93.  
  94. if(morse.equals(".-.-"))
  95. ret = ",";
  96.  
  97. if(morse.equals("---."))
  98. ret = ".";
  99.  
  100. if(morse.equals("----"))
  101. ret = "?";
  102.  
  103. return ret;
  104. }
  105.  
  106. public static String decode(String morse, String lengths) {
  107. StringBuilder ret = new StringBuilder();
  108. int currLen = 0;
  109.  
  110. for(int i = 0; i < lengths.length(); i++) {
  111. currLen = Integer.parseInt("" + lengths.charAt(i));
  112.  
  113. ret.append(fs.decodeMorse(morse.substring(0, currLen)));
  114. morse = morse.substring(currLen, morse.length());
  115. }
  116.  
  117. return ret.toString();
  118. }
  119.  
  120. public static String encode(char c) {
  121. switch(c) {
  122. case 'A':
  123. return new String(".-");
  124. case 'B':
  125. return new String("-...");
  126. case 'C':
  127. return new String("-.-.");
  128. case 'D':
  129. return new String("-..");
  130. case 'E':
  131. return new String(".");
  132. case 'F':
  133. return new String("..-.");
  134. case 'G':
  135. return new String("--.");
  136. case 'H':
  137. return new String("....");
  138. case 'I':
  139. return new String("..");
  140. case 'J':
  141. return new String(".---");
  142. case 'K':
  143. return new String("-.-");
  144. case 'L':
  145. return new String(".-..");
  146. case 'M':
  147. return new String("--");
  148. case 'N':
  149. return new String("-.");
  150. case 'O':
  151. return new String("---");
  152. case 'P':
  153. return new String(".--.");
  154. case 'Q':
  155. return new String("--.-");
  156. case 'R':
  157. return new String(".-.");
  158. case 'S':
  159. return new String("...");
  160. case 'T':
  161. return new String("-");
  162. case 'U':
  163. return new String("..-");
  164. case 'V':
  165. return new String("...-");
  166. case 'W':
  167. return new String(".--");
  168. case 'X':
  169. return new String("-..-");
  170. case 'Y':
  171. return new String("-.--");
  172. case 'Z':
  173. return new String("--..");
  174. case '_':
  175. return new String("..--");
  176. case ',':
  177. return new String(".-.-");
  178. case '.':
  179. return new String("---.");
  180. case '?':
  181. return new String("----");
  182.  
  183. }
  184.  
  185. return new String();
  186. }
  187.  
  188. public static void main(String[] args) {
  189. String line;
  190. StringBuilder morse = new StringBuilder();
  191. StringBuilder lengths = new StringBuilder();
  192.  
  193. while(true) {
  194. try {
  195. line = br.readLine();
  196.  
  197. if (line == null) {
  198. break;
  199. }
  200.  
  201. for (int i = 0; i < line.length(); i++) {
  202. char c = line.charAt(i);
  203.  
  204. String encoded = fs.encode(c);
  205. morse.append(encoded);
  206. lengths.append(encoded.length());
  207. }
  208.  
  209. lengths = lengths.reverse();
  210.  
  211. System.out.println(fs.decode(morse.toString(), lengths.toString()));
  212.  
  213. } catch (IOException ex) {
  214. Logger.getLogger(fs.class.getName()).log(Level.SEVERE, null, ex);
  215. }
  216. }
  217. }
  218.  
  219. }
  220.