Source code for submission s569

fs.cpp

  1. //
  2. // File: f1.cc
  3. // Author: cteam029
  4. //
  5. // Created on October 19, 2013, 10:26 AM
  6. //
  7.  
  8. #include <cstdlib>
  9. #include <cstdio>
  10. #include <iostream>
  11. #include <vector>
  12.  
  13. using namespace std;
  14.  
  15. string encode(char a){
  16. string res;
  17. switch(a){
  18. case 'A':
  19. res = ".-";
  20. break;
  21. case 'B':
  22. res = "-...";
  23. break;
  24. case 'C':
  25. res = "-.-.";
  26. break;
  27. case 'D':
  28. res = "-..";
  29. break;
  30. case 'E':
  31. res = ".";
  32. break;
  33. case 'F':
  34. res = "..-.";
  35. break;
  36. case 'G':
  37. res = "--.";
  38. break;
  39. case 'H':
  40. res = "....";
  41. break;
  42. case 'I':
  43. res = "..";
  44. break;
  45. case 'J':
  46. res = ".---";
  47. break;
  48. case 'K':
  49. res = "-.-";
  50. break;
  51. case 'L':
  52. res = ".-..";
  53. break;
  54. case 'M':
  55. res = "--";
  56. break;
  57. case 'N':
  58. res = "-.";
  59. break;
  60. case 'O':
  61. res = "---";
  62. break;
  63. case 'P':
  64. res = ".--.";
  65. break;
  66. case 'Q':
  67. res = "--.-";
  68. break;
  69. case 'R':
  70. res = ".-.";
  71. break;
  72. case 'S':
  73. res = "...";
  74. break;
  75. case 'T':
  76. res = "-";
  77. break;
  78. case 'U':
  79. res = "..-";
  80. break;
  81. case 'V':
  82. res = "...-";
  83. break;
  84. case 'W':
  85. res = ".--";
  86. break;
  87. case 'X':
  88. res = "-..-";
  89. break;
  90. case 'Y':
  91. res = "-.--";
  92. break;
  93. case 'Z':
  94. res = "--..";
  95. break;
  96. case '_':
  97. res = "..--";
  98. break;
  99. case ',':
  100. res = ".-.-";
  101. break;
  102. case '.':
  103. res = "---.";
  104. break;
  105. case '?':
  106. res = "----";
  107. break;
  108. }
  109. return res;
  110. }
  111.  
  112. char decode(string a){
  113. string res;
  114. for(char i = 'A'; i <= 'Z'; i++){
  115. switch(i){
  116. case 'A':
  117. res = ".-";
  118. break;
  119. case 'B':
  120. res = "-...";
  121. break;
  122. case 'C':
  123. res = "-.-.";
  124. break;
  125. case 'D':
  126. res = "-..";
  127. break;
  128. case 'E':
  129. res = ".";
  130. break;
  131. case 'F':
  132. res = "..-.";
  133. break;
  134. case 'G':
  135. res = "--.";
  136. break;
  137. case 'H':
  138. res = "....";
  139. break;
  140. case 'I':
  141. res = "..";
  142. break;
  143. case 'J':
  144. res = ".---";
  145. break;
  146. case 'K':
  147. res = "-.-";
  148. break;
  149. case 'L':
  150. res = ".-..";
  151. break;
  152. case 'M':
  153. res = "--";
  154. break;
  155. case 'N':
  156. res = "-.";
  157. break;
  158. case 'O':
  159. res = "---";
  160. break;
  161. case 'P':
  162. res = ".--.";
  163. break;
  164. case 'Q':
  165. res = "--.-";
  166. break;
  167. case 'R':
  168. res = ".-.";
  169. break;
  170. case 'S':
  171. res = "...";
  172. break;
  173. case 'T':
  174. res = "-";
  175. break;
  176. case 'U':
  177. res = "..-";
  178. break;
  179. case 'V':
  180. res = "...-";
  181. break;
  182. case 'W':
  183. res = ".--";
  184. break;
  185. case 'X':
  186. res = "-..-";
  187. break;
  188. case 'Y':
  189. res = "-.--";
  190. break;
  191. case 'Z':
  192. res = "--..";
  193. break;
  194. }
  195. if(res == a){
  196. return i;
  197. }
  198. }
  199. res = "..--";
  200. if(a == res)return '_';
  201. res = ".-.-";
  202. if(a == res)return ',';
  203. res = "---.";
  204. if(a == res)return '.';
  205. res = "----";
  206. if(a == res)return '?';
  207. return '?';
  208. }
  209.  
  210. //
  211. //
  212. //
  213. int main(int argc, char** argv) {
  214. string line, mid, tmp, res;
  215. vector <int> vec;
  216. while(cin >> line){
  217. vec.clear();
  218. mid = "";
  219. res = "";
  220. for(unsigned int i = 0; i < line.length(); i++){
  221. tmp = encode(line[i]);
  222. vec.push_back(tmp.length());
  223. mid += tmp;
  224. }
  225. int j = vec.size()-1;
  226. for(unsigned int i = 0; i < mid.length(); ){
  227. tmp = decode(mid.substr(i, vec[j]));
  228. res += tmp;
  229. i += vec[j--];
  230. }
  231. cout << res << endl;
  232. }
  233. return 0;
  234. }
  235.  
  236.