Source code for submission s585

Go to diff to previous submission

Fs.java

  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package basic;
  6.  
  7. import java.io.BufferedReader;
  8. import java.io.InputStreamReader;
  9. import java.util.Arrays;
  10. import java.util.HashMap;
  11. import java.util.Iterator;
  12. import java.util.Map;
  13. import java.util.Map.Entry;
  14. import java.util.Scanner;
  15. import java.util.StringTokenizer;
  16. import java.util.logging.Level;
  17. import java.util.logging.Logger;
  18.  
  19. /**
  20.  *
  21.  * @author cteam043
  22.  */
  23. public class Fs {
  24.  
  25. static final double EPS = 1E-7;
  26.  
  27. public Fs() {
  28.  
  29. encodingSToM = new HashMap<String, String>(40);
  30. // first to check
  31. encodingSToM.put("A", ".-");
  32. encodingSToM.put("B", "-...");
  33. encodingSToM.put("C", "-.-.");
  34. encodingSToM.put("D", "-..");
  35. encodingSToM.put("E", ".");
  36. encodingSToM.put("F", "..-.");
  37. encodingSToM.put("G", "--.");
  38. encodingSToM.put("H", "....");
  39. encodingSToM.put("I", "..");
  40. encodingSToM.put("J", ".---");
  41. encodingSToM.put("K", "-.-");
  42. encodingSToM.put("L", ".-..");
  43. encodingSToM.put("M", "--");
  44. encodingSToM.put("N", "-.");
  45. encodingSToM.put("O", "---");
  46. encodingSToM.put("P", ".--.");
  47. encodingSToM.put("Q", "--.-");
  48. encodingSToM.put("R", ".-.");
  49. encodingSToM.put("S", "...");
  50. encodingSToM.put("T", "-");
  51. encodingSToM.put("U", "..-");
  52. encodingSToM.put("V", "...-");
  53. encodingSToM.put("W", ".--");
  54. encodingSToM.put("X", "-..-");
  55. encodingSToM.put("Y", "-.--");
  56. encodingSToM.put("Z", "--..");
  57. encodingSToM.put("_", "..--");
  58. encodingSToM.put(",", ".-.-");
  59. encodingSToM.put(".", "---.");
  60. encodingSToM.put("?", "----");
  61.  
  62. encodingMToS = invertMap(encodingSToM);
  63. inputText = "";
  64. morseText = "";
  65. morseNumbers = "";
  66. outputText = "";
  67. outputNumbers = "";
  68.  
  69.  
  70. }
  71.  
  72. private HashMap<String, String> invertMap(Map<String, String> input) {
  73. HashMap<String, String> output = new HashMap<String, String>(40);
  74. for (Entry<String, String> entry : input.entrySet()) {
  75. String outputV = entry.getKey();
  76. String outputK = entry.getValue();
  77. output.put(outputK, outputV);
  78. }
  79. return output;
  80. }
  81.  
  82. String nextToken() throws Exception {
  83. while (!st.hasMoreTokens()) {
  84. st = new StringTokenizer(input.readLine());
  85. }
  86. return st.nextToken();
  87. }
  88.  
  89. int nextInt() throws Exception {
  90. return Integer.parseInt(nextToken());
  91. }
  92. HashMap<String, String> encodingSToM;
  93. HashMap<String, String> encodingMToS;
  94. String inputText;
  95. String morseText;
  96. String morseNumbers;
  97. String outputText;
  98. String outputNumbers;
  99. boolean testOutput;
  100.  
  101. private void createMorse() {
  102. String aChar;
  103. String charsMorse;
  104.  
  105. for (int i = 0; i < inputText.length(); i++) {
  106. // CHECK
  107. aChar = Character.toString(inputText.charAt(i));
  108. if (testOutput) {
  109. System.out.println("Char is " + aChar);
  110. }
  111. charsMorse = encodingSToM.get(aChar);
  112. if (testOutput) {
  113. System.out.println("charsMorse is " + charsMorse);
  114. }
  115. if (testOutput) {
  116. System.out.println("charstry {Morse.length is " + charsMorse.length());
  117. }
  118. morseNumbers = morseNumbers.concat(String.valueOf(charsMorse.length()));
  119. morseText = morseText.concat(charsMorse);
  120. }
  121.  
  122. }
  123.  
  124. private void createPlainText() {
  125. String charsMorse;
  126. String plainChar;
  127. int morsePos = 0;
  128. int morseCharLen = 0;
  129.  
  130. for (int i = 0; i < inputText.length(); i++) {
  131.  
  132. // CHECK = Character.toString(inputText.charAt(i));
  133. morseCharLen = Integer.parseInt(Character.toString(outputNumbers.charAt(i)));
  134. if (testOutput) {
  135. System.out.println("morseCharLen is " + morseCharLen);
  136. }
  137. if (testOutput) {
  138. System.out.println("morsePos is " + morsePos);
  139. }
  140.  
  141. charsMorse = morseText.substring(morsePos, morsePos + morseCharLen);
  142. if (testOutput) {
  143. System.out.println("charsMorse is " + charsMorse);
  144. }
  145. plainChar = encodingMToS.get(charsMorse);
  146. if (testOutput) {
  147. System.out.println("plainChar is " + plainChar);
  148. }
  149. outputText = outputText.concat(plainChar);
  150. morsePos += morseCharLen;
  151. }
  152.  
  153. }
  154.  
  155. private void reverseNumbers() {
  156. String aNumber;
  157. for (int i = 0; i < morseNumbers.length(); i++) {
  158. // CHECK
  159. aNumber = Character.toString(morseNumbers.charAt(morseNumbers.length() - i - 1));
  160. outputNumbers = outputNumbers.concat(aNumber);
  161. }
  162.  
  163. }
  164.  
  165. public void solve() {
  166. testOutput = false;
  167. Scanner sc = new Scanner(System.in);
  168. while (sc.hasNextLine()) {
  169.  
  170. inputText = "";
  171. morseText = "";
  172. morseNumbers = "";
  173. outputText = "";
  174. outputNumbers = "";
  175.  
  176. // inputText = nextToken();
  177. inputText = sc.nextLine();
  178.  
  179. createMorse();
  180.  
  181. if (testOutput) {
  182. System.out.println("Code:\n" + morseText);
  183. System.out.println("Numbers:\n" + morseNumbers);
  184. }
  185.  
  186. reverseNumbers();
  187. createPlainText();
  188.  
  189. if (testOutput) {
  190. System.out.println("Plaintext:\n" + outputText);
  191. }
  192.  
  193. System.out.println(outputText);
  194.  
  195. }
  196. }
  197.  
  198. /**
  199.   * @param args the command line arguments
  200.   */
  201. public static void main(String[] args) throws Exception {
  202. Fs instance = new Fs();
  203. instance.solve();
  204. }
  205. }
  206.  

Diff to submission s554

Fs.java

--- c5.s554.cteam043.fs.java.0.Fs.java
+++ c5.s585.cteam043.fs.java.0.Fs.java
@@ -12,4 +12,5 @@
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Scanner;
 import java.util.StringTokenizer;
 import java.util.logging.Level;
@@ -28,5 +29,5 @@
     public Fs() {
 
-        encodingSToM = new HashMap<String, String>();
+        encodingSToM = new HashMap<String, String>(40);
         // first to check
         encodingSToM.put("A", ".-");
@@ -72,5 +73,5 @@
 
     private HashMap<String, String> invertMap(Map<String, String> input) {
-        HashMap<String, String> output = new HashMap<String, String>();
+        HashMap<String, String> output = new HashMap<String, String>(40);
         for (Entry<String, String> entry : input.entrySet()) {
             String outputV = entry.getKey();
@@ -115,5 +116,5 @@
             }
             if (testOutput) {
-                System.out.println("charsMorse.length is " + charsMorse.length());
+                System.out.println("charstry {Morse.length is " + charsMorse.length());
             }
             morseNumbers = morseNumbers.concat(String.valueOf(charsMorse.length()));
@@ -166,11 +167,16 @@
     public void solve() {
         testOutput = false;
-        while (1 == 1) {
-            try {
+        Scanner sc = new Scanner(System.in);
+        while (sc.hasNextLine()) {
+
+            inputText = "";
+            morseText = "";
+            morseNumbers = "";
+            outputText = "";
+            outputNumbers = "";
+
+//                inputText = nextToken();
+            inputText = sc.nextLine();
 
-                inputText = nextToken();
-            } catch (Exception ex) {
-                return;
-            }
             createMorse();