fork download
  1. import java.io.BufferedReader;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.HashMap;
  7.  
  8. public class Main {
  9. public static void main(String[] args) {
  10. romaInit();
  11. HashMap<String, Integer> m = new HashMap<String, Integer>();
  12. try {
  13. BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("ニホン.txt")));
  14. while (true) {
  15. String line = reader.readLine();
  16. if (line == null) {
  17. break;
  18. }
  19. String[] tokens = line.split(" ");
  20. for (int i = 0; i < tokens.length; i++) {
  21. String token = tokens[i];
  22. if (isRomaString(token)) {
  23. if (m.containsKey(token)) {
  24. m.put(token, m.get(token) + 1);
  25. } else {
  26. m.put(token, 1);
  27. }
  28. }
  29. }
  30. }
  31. } catch (FileNotFoundException e) {
  32. throw new RuntimeException(e);
  33. } catch (IOException e) {
  34. throw new RuntimeException(e);
  35. }
  36. for (String s : m.keySet()) {
  37. System.out.println(s + " : " + m.get(s));
  38. }
  39. }
  40.  
  41. static HashMap<String, Boolean> roma = new HashMap<String, Boolean>();
  42.  
  43. static void romaInit() {
  44. roma.put("a", true);
  45. roma.put("ba", true);
  46. roma.put("be", true);
  47. roma.put("bi", true);
  48. roma.put("bo", true);
  49. roma.put("bu", true);
  50. roma.put("bya", true);
  51. roma.put("byo", true);
  52. roma.put("byu", true);
  53. roma.put("cha", true);
  54. roma.put("chi", true);
  55. roma.put("cho", true);
  56. roma.put("chu", true);
  57. roma.put("da", true);
  58. roma.put("de", true);
  59. roma.put("di", true);
  60. roma.put("do", true);
  61. roma.put("du", true);
  62. roma.put("dya", true);
  63. roma.put("dyo", true);
  64. roma.put("dyu", true);
  65. roma.put("e", true);
  66. roma.put("fu", true);
  67. roma.put("ga", true);
  68. roma.put("ge", true);
  69. roma.put("gi", true);
  70. roma.put("go", true);
  71. roma.put("gu", true);
  72. roma.put("gwa", true);
  73. roma.put("gya", true);
  74. roma.put("gyo", true);
  75. roma.put("gyu", true);
  76. roma.put("ha", true);
  77. roma.put("he", true);
  78. roma.put("hi", true);
  79. roma.put("ho", true);
  80. roma.put("hu", true);
  81. roma.put("hya", true);
  82. roma.put("hyo", true);
  83. roma.put("hyu", true);
  84. roma.put("i", true);
  85. roma.put("ja", true);
  86. roma.put("ji", true);
  87. roma.put("jo", true);
  88. roma.put("ju", true);
  89. roma.put("ka", true);
  90. roma.put("ke", true);
  91. roma.put("ki", true);
  92. roma.put("ko", true);
  93. roma.put("ku", true);
  94. roma.put("kwa", true);
  95. roma.put("kya", true);
  96. roma.put("kyo", true);
  97. roma.put("kyu", true);
  98. roma.put("m", true);
  99. roma.put("ma", true);
  100. roma.put("me", true);
  101. roma.put("mi", true);
  102. roma.put("mo", true);
  103. roma.put("mu", true);
  104. roma.put("mya", true);
  105. roma.put("myo", true);
  106. roma.put("myu", true);
  107. roma.put("n", true);
  108. roma.put("na", true);
  109. roma.put("ne", true);
  110. roma.put("ni", true);
  111. roma.put("no", true);
  112. roma.put("nu", true);
  113. roma.put("nya", true);
  114. roma.put("nyo", true);
  115. roma.put("nyu", true);
  116. roma.put("o", true);
  117. roma.put("pa", true);
  118. roma.put("pe", true);
  119. roma.put("pi", true);
  120. roma.put("po", true);
  121. roma.put("pu", true);
  122. roma.put("pya", true);
  123. roma.put("pyo", true);
  124. roma.put("pyu", true);
  125. roma.put("ra", true);
  126. roma.put("re", true);
  127. roma.put("ri", true);
  128. roma.put("ro", true);
  129. roma.put("ru", true);
  130. roma.put("rya", true);
  131. roma.put("ryo", true);
  132. roma.put("ryu", true);
  133. roma.put("sa", true);
  134. roma.put("se", true);
  135. roma.put("sha", true);
  136. roma.put("shi", true);
  137. roma.put("sho", true);
  138. roma.put("shu", true);
  139. roma.put("si", true);
  140. roma.put("so", true);
  141. roma.put("su", true);
  142. roma.put("sya", true);
  143. roma.put("syo", true);
  144. roma.put("syu", true);
  145. roma.put("ta", true);
  146. roma.put("te", true);
  147. roma.put("ti", true);
  148. roma.put("to", true);
  149. roma.put("tsu", true);
  150. roma.put("tu", true);
  151. roma.put("tya", true);
  152. roma.put("tyo", true);
  153. roma.put("tyu", true);
  154. roma.put("u", true);
  155. roma.put("w", true);
  156. roma.put("wa", true);
  157. roma.put("wo", true);
  158. roma.put("ya", true);
  159. roma.put("yo", true);
  160. roma.put("yu", true);
  161. roma.put("za", true);
  162. roma.put("ze", true);
  163. roma.put("zi", true);
  164. roma.put("zo", true);
  165. roma.put("zu", true);
  166. roma.put("zya", true);
  167. roma.put("zyo", true);
  168. roma.put("zyu", true);
  169. }
  170.  
  171. static boolean isRomaString(String s) {
  172. if (s.length() < 1) {
  173. return false;
  174. }
  175. int i = 0;
  176. int j = 0;
  177. String b;
  178. while (i < s.length()) {
  179. while (j < s.length()) {
  180. if (isBoin(s.charAt(j))) {
  181. break;
  182. }
  183. j++;
  184. }
  185. if (j < s.length()) {
  186. b = s.substring(i, j + 1);
  187. } else {
  188. b = s.substring(i);
  189. }
  190. if (!roma.containsKey(b.toLowerCase())) {
  191. return false;
  192. }
  193. i = j + 1;
  194. j = j + 1;
  195. }
  196. return true;
  197. }
  198.  
  199. static boolean isBoin(char c) {
  200. switch (c) {
  201. case 'a':
  202. case 'i':
  203. case 'u':
  204. case 'e':
  205. case 'o':
  206. case 'n':
  207. return true;
  208. default:
  209. return false;
  210. }
  211. }
  212. }
  213.  
  214. /*
  215. ローマ字 - Wikipedia
  216. http://j...content-available-to-author-only...a.org/wiki/%E3%83%AD%E3%83%BC%E3%83%9E%E5%AD%97
  217. romaInit関数はこのページのローマ字をコピペして正規表現で整形してソースコードに貼り付けました。
  218.  
  219. 改行で区切られた文字列を読み取り、それをスペースで分割して単語を読み取り、それを母音aiueoとnで
  220. 音に分割します。音とローマ字との照合を行い、単語に含まれる全部の音がローマ字に合致したら
  221. その単語はローマ字表記であると判断するようにしました。超がんばりました。わたしにはこれが限界です。
  222. */
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty