Advertisement
Guest User

Untitled

a guest
Aug 31st, 2018
560
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.24 KB | None | 0 0
  1. package main;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.Scanner;
  8.  
  9. public class ConversionCore {
  10.  
  11. private static Map<String, String[]> map = new HashMap<>();
  12.  
  13. public static void main(String[] args) {
  14. map.put("あ", new String[] {"a"});
  15. map.put("い", new String[] {"i"});
  16. map.put("う", new String[] {"u"});
  17. map.put("え", new String[] {"e"});
  18. map.put("お", new String[] {"o"});
  19. map.put("か", new String[] {"ka", "ca"});
  20. map.put("き", new String[] {"ki"});
  21. map.put("く", new String[] {"ku", "qu", "cu"});
  22. map.put("け", new String[] {"ke"});
  23. map.put("こ", new String[] {"ko", "co"});
  24. map.put("さ", new String[] {"sa"});
  25. map.put("し", new String[] {"si", "shi", "ci"});
  26. map.put("す", new String[] {"su"});
  27. map.put("せ", new String[] {"se", "ce"});
  28. map.put("そ", new String[] {"so"});
  29. map.put("た", new String[] {"ta"});
  30. map.put("ち", new String[] {"ti", "chi"});
  31. map.put("つ", new String[] {"tu", "tsu"});
  32. map.put("て", new String[] {"te"});
  33. map.put("と", new String[] {"to"});
  34. map.put("な", new String[] {"na"});
  35. map.put("に", new String[] {"ni"});
  36. map.put("ぬ", new String[] {"nu"});
  37. map.put("ね", new String[] {"ne"});
  38. map.put("の", new String[] {"no"});
  39. map.put("は", new String[] {"ha"});
  40. map.put("ひ", new String[] {"hi"});
  41. map.put("ふ", new String[] {"hu", "fu"});
  42. map.put("へ", new String[] {"he"});
  43. map.put("ほ", new String[] {"ho"});
  44. map.put("ま", new String[] {"ma"});
  45. map.put("み", new String[] {"mi"});
  46. map.put("む", new String[] {"mu"});
  47. map.put("め", new String[] {"me"});
  48. map.put("も", new String[] {"mo"});
  49. map.put("や", new String[] {"ya"});
  50. map.put("ゆ", new String[] {"yu"});
  51. map.put("よ", new String[] {"yo"});
  52. map.put("ら", new String[] {"ra"});
  53. map.put("り", new String[] {"ri"});
  54. map.put("る", new String[] {"ru"});
  55. map.put("れ", new String[] {"re"});
  56. map.put("ろ", new String[] {"ro"});
  57. map.put("わ", new String[] {"wa"});
  58. map.put("を", new String[] {"wo"});
  59. map.put("ん", new String[] {"nn"});
  60. map.put("が", new String[] {"ga"});
  61. map.put("ぎ", new String[] {"gi"});
  62. map.put("ぐ", new String[] {"gu"});
  63. map.put("げ", new String[] {"ge"});
  64. map.put("ご", new String[] {"go"});
  65. map.put("ざ", new String[] {"za"});
  66. map.put("じ", new String[] {"zi", "ji"});
  67. map.put("ず", new String[] {"zu"});
  68. map.put("ぜ", new String[] {"ze"});
  69. map.put("ぞ", new String[] {"zo"});
  70. map.put("だ", new String[] {"da"});
  71. map.put("ぢ", new String[] {"di"});
  72. map.put("づ", new String[] {"du"});
  73. map.put("で", new String[] {"de"});
  74. map.put("ど", new String[] {"do"});
  75. map.put("ば", new String[] {"ba"});
  76. map.put("び", new String[] {"bi"});
  77. map.put("ぶ", new String[] {"bu"});
  78. map.put("べ", new String[] {"be"});
  79. map.put("ぼ", new String[] {"bo"});
  80. map.put("ぱ", new String[] {"pa"});
  81. map.put("ぴ", new String[] {"pi"});
  82. map.put("ぷ", new String[] {"pu"});
  83. map.put("ぺ", new String[] {"pe"});
  84. map.put("ぽ", new String[] {"po"});
  85. map.put("きゃ", new String[] {"kya", "kilya", "kixlya"});
  86. map.put("きぃ", new String[] {"kyi", "kili", "kixi"});
  87. map.put("きゅ", new String[] {"kyu", "kilyu", "kixyu"});
  88. map.put("きぇ", new String[] {"kye", "kile", "kixe"});
  89. map.put("きょ", new String[] {"kyo", "kilyo", "kixyo"});
  90. map.put("くぁ", new String[] {"qa", "kula", "kuxa"});
  91. map.put("くぃ", new String[] {"qi", "kuli", "kuxi"});
  92. map.put("くぇ", new String[] {"qe", "kule", "kuxe"});
  93. map.put("くぉ", new String[] {"qo", "kulo", "kuxo"});
  94. map.put("しゃ", new String[] {"sha", "sya", "cilya" , "cixya", "silya", "sixya", "shalya", "shaxya"});
  95. map.put("しぃ", new String[] {"syi", "sili", "cili", "cixi", "sili", "sixi", "shili", "shixi"});
  96. map.put("しゅ", new String[] {"shu", "syu", "cilyu", "cixyu", "silyu" , "sixyu", "shilyu" , "shixyu"});
  97. map.put("しぇ", new String[] {"she", "sye", "cile" , "cixe", "sile" , "sixe", "shile" , "shixe"});
  98. map.put("しょ", new String[] {"sho", "syo", "cilyo" , "cixyo", "silyo" , "sixyo", "shilyo" , "shixyo"});
  99. map.put("ちゃ", new String[] {"cha", "cya", "tya", "chilya" , "chixya", "tilya" , "tixya"});
  100. map.put("ちぃ", new String[] {"cyi", "tyi", "chili" , "chixi", "tili" , "tixi"});
  101. map.put("ちゅ", new String[] {"chu", "cyu", "tyu", "chilyu", "chixyu", "tilyu" , "tixyo"});
  102. map.put("ちぇ", new String[] {"che", "cye", "tye", "chile", "chixe", "tile" , "tixe"});
  103. map.put("ちょ", new String[] {"cho", "cyo", "tyo", "chilo", "chixo", "tilo" , "tixo"});
  104. map.put("てゃ", new String[] {"tha", "telya" , "texya"});
  105. map.put("てぃ", new String[] {"thi", "teli" , "texi"});
  106. map.put("てゅ", new String[] {"thu", "telyu" , "texyu"});
  107. map.put("てぇ", new String[] {"the", "tele" , "texe"});
  108. map.put("てょ", new String[] {"tho", "telyo" , "texyo"});
  109. map.put("にゃ", new String[] {"nya", "nilya" , "nixya"});
  110. map.put("にぃ", new String[] {"nyi", "nili" , "nixi"});
  111. map.put("にゅ", new String[] {"nyu", "nilyu" , "nixyu"});
  112. map.put("にぇ", new String[] {"nye", "nile" , "nixe"});
  113. map.put("にょ", new String[] {"nyo", "nilyo" , "nixyo"});
  114. map.put("ひゃ", new String[] {"hya", "hilya" , "hixya"});
  115. map.put("ひぃ", new String[] {"hyi", "hili" , "hixi"});
  116. map.put("ひゅ", new String[] {"hyu", "hilyu" , "hixyu"});
  117. map.put("ひぇ", new String[] {"hye", "hile" , "hixe"});
  118. map.put("ひょ", new String[] {"hyo", "hilyo" , "hixyo"});
  119. map.put("ふぁ", new String[] {"fa", "hula" , "huxa"});
  120. map.put("ふぃ", new String[] {"fi", "huli" , "huxi"});
  121. map.put("ふぇ", new String[] {"fe", "hule" , "huxe"});
  122. map.put("ふぉ", new String[] {"fo", "hulo" , "huxo"});
  123. map.put("みゃ", new String[] {"mya", "milya" , "mixya"});
  124. map.put("みぃ", new String[] {"myi", "mili" , "mixi"});
  125. map.put("みゅ", new String[] {"myu", "milyu" , "mixyu"});
  126. map.put("みぇ", new String[] {"mye", "mile" , "mixe"});
  127. map.put("みょ", new String[] {"myo", "milyo" , "mixyo"});
  128. map.put("りゃ", new String[] {"rya", "rilya" , "rixya"});
  129. map.put("りぃ", new String[] {"ryi", "rili" , "rixi"});
  130. map.put("りゅ", new String[] {"ryu", "rilyu" , "rixyu"});
  131. map.put("りぇ", new String[] {"rye", "rile" , "rixe"});
  132. map.put("りょ", new String[] {"ryo", "rilyo" , "rixyo"});
  133. map.put("ぎゃ", new String[] {"gya", "gilya" , "gixya"});
  134. map.put("ぎぃ", new String[] {"gyi", "gili" , "gixi"});
  135. map.put("ぎゅ", new String[] {"gyu", "gilyu" , "gixyu"});
  136. map.put("ぎぇ", new String[] {"gye", "gile" , "gixe"});
  137. map.put("ぎょ", new String[] {"gyo", "gilyo" , "gixyo"});
  138. map.put("じゃ", new String[] {"ja", "jya", "zya", "jilya" , "jixya", "zilya" , "zixya"});
  139. map.put("じぃ", new String[] {"jyi", "zyi", "jili" , "jixi", "zili" , "zixi"});
  140. map.put("じゅ", new String[] {"ju", "jyu", "zyu", "jilyu" , "jixyu", "zilyu" , "zixyu"});
  141. map.put("じぇ", new String[] {"je", "jye", "zye", "jile" , "jixe", "zile" , "zixe"});
  142. map.put("じょ", new String[] {"jo", "jyo", "zyo", "jilyo" , "jixyo", "zilyo" , "zixyo"});
  143. map.put("ぢゃ", new String[] {"dya", "dilya" ,"dixya"});
  144. map.put("ぢぃ", new String[] {"dyi", "dili" , "dixi"});
  145. map.put("ぢゅ", new String[] {"dyu", "dilyu" , "dixyu"});
  146. map.put("ぢぇ", new String[] {"dye", "dile" , "dixe"});
  147. map.put("ぢょ", new String[] {"dyo", "dilyo" , "dixyo"});
  148. map.put("びゃ", new String[] {"bya", "bilya" , "bixya"});
  149. map.put("びぃ", new String[] {"byi", "bili" , "bixi"});
  150. map.put("びゅ", new String[] {"byu", "bilyu" , "bixyu"});
  151. map.put("びぇ", new String[] {"bye", "bile" , "bixe"});
  152. map.put("びょ", new String[] {"byo", "bilyo" , "bixyo"});
  153. map.put("ぴゃ", new String[] {"pya", "pilya" , "pixya"});
  154. map.put("ぴぃ", new String[] {"pyi", "pili" , "pixi"});
  155. map.put("ぴゅ", new String[] {"pyu", "pilyu" , "pixyu"});
  156. map.put("ぴぇ", new String[] {"pye", "pile" , "pixe"});
  157. map.put("ぴょ", new String[] {"pyo", "pilyo" , "pixyo"});
  158. map.put("ぁ", new String[] {"la", "xa"});
  159. map.put("ぅ", new String[] {"lu", "xu"});
  160. map.put("ぉ", new String[] {"lo", "xo"});
  161.  
  162.  
  163. @SuppressWarnings("resource")
  164. Scanner sc = new Scanner(System.in);
  165. List<String> answer = toRoma(sc.nextLine());
  166. System.out.println(answer);
  167. }
  168.  
  169. public static List<String> toRoma(String line) {
  170. String[] hiragana = new String[line.length()];
  171. int total = 0;
  172. for(int i = 0; i < line.length(); i++) {
  173. hiragana[i] = line.substring(i, i+1);
  174. }
  175. List<String> result = new ArrayList<>();
  176. for(int i = 0; i < hiragana.length; i++) {
  177. String[] array = null;
  178. if(i < hiragana.length - 1 && (hiragana[i+1].equals("ゃ") || hiragana[i+1].equals("ぃ") || hiragana[i+1].equals("ゅ") || hiragana[i+1].equals("ぇ") || hiragana[i+1].equals("ょ"))) {
  179. array = map.get(hiragana[i] + hiragana[i+1]);
  180. i += 1;
  181. } else if(hiragana[i].equals("っ")) {
  182. if(i + 1 < hiragana.length) {
  183. String[] tmpArray = map.get(hiragana[i+1]);
  184. array = new String[tmpArray.length + 2];
  185. array[0] = "ltu";
  186. array[1] = "xtu";
  187. for(int j = 0; j < tmpArray.length; j++) {
  188. array[j + 2] = tmpArray[j].toString().substring(0, 1);
  189. }
  190. } else {
  191. array = new String[] {"ltu", "xtu"};
  192. }
  193. } else if(hiragana[i].equals("ん")) {
  194. if(hiragana[i+1].equals("あ") || hiragana[i+1].equals("い") || hiragana[i+1].equals("う") || hiragana[i+1].equals("え") || hiragana[i+1].equals("お")) {
  195. array = map.get(hiragana[i]);
  196. } else {
  197. array = new String[] {"nn", "n"};
  198. }
  199. } else {
  200. array = map.get(hiragana[i]);
  201. }
  202. if(result.size() == 0){
  203. for(int j = 0; j < array.length; j++) {
  204. result.add(array[j]);
  205. }
  206. total = array.length;
  207. } else {
  208. total *= array.length;
  209. if(array.length != 1) {
  210. for(int j = 0; j < array.length - 1; j++) {
  211. for(int k = 0; k < total / array.length; k++) {
  212. result.add(result.get(k));
  213. }
  214. }
  215. }
  216. int m = 0;
  217. for(int j = 0; j < array.length; j++) {
  218. for(int k = 0; k < total / array.length; k++) {
  219. result.set(m, result.get(m) + array[j]);
  220. m += 1;
  221. }
  222. }
  223. }
  224. }
  225. return result;
  226. }
  227.  
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement