Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Scanner;
- public class ConversionCore {
- private static Map<String, String[]> map = new HashMap<>();
- public static void main(String[] args) {
- map.put("あ", new String[] {"a"});
- map.put("い", new String[] {"i"});
- map.put("う", new String[] {"u"});
- map.put("え", new String[] {"e"});
- map.put("お", new String[] {"o"});
- map.put("か", new String[] {"ka", "ca"});
- map.put("き", new String[] {"ki"});
- map.put("く", new String[] {"ku", "qu", "cu"});
- map.put("け", new String[] {"ke"});
- map.put("こ", new String[] {"ko", "co"});
- map.put("さ", new String[] {"sa"});
- map.put("し", new String[] {"si", "shi", "ci"});
- map.put("す", new String[] {"su"});
- map.put("せ", new String[] {"se", "ce"});
- map.put("そ", new String[] {"so"});
- map.put("た", new String[] {"ta"});
- map.put("ち", new String[] {"ti", "chi"});
- map.put("つ", new String[] {"tu", "tsu"});
- map.put("て", new String[] {"te"});
- map.put("と", new String[] {"to"});
- map.put("な", new String[] {"na"});
- map.put("に", new String[] {"ni"});
- map.put("ぬ", new String[] {"nu"});
- map.put("ね", new String[] {"ne"});
- map.put("の", new String[] {"no"});
- map.put("は", new String[] {"ha"});
- map.put("ひ", new String[] {"hi"});
- map.put("ふ", new String[] {"hu", "fu"});
- map.put("へ", new String[] {"he"});
- map.put("ほ", new String[] {"ho"});
- map.put("ま", new String[] {"ma"});
- map.put("み", new String[] {"mi"});
- map.put("む", new String[] {"mu"});
- map.put("め", new String[] {"me"});
- map.put("も", new String[] {"mo"});
- map.put("や", new String[] {"ya"});
- map.put("ゆ", new String[] {"yu"});
- map.put("よ", new String[] {"yo"});
- map.put("ら", new String[] {"ra"});
- map.put("り", new String[] {"ri"});
- map.put("る", new String[] {"ru"});
- map.put("れ", new String[] {"re"});
- map.put("ろ", new String[] {"ro"});
- map.put("わ", new String[] {"wa"});
- map.put("を", new String[] {"wo"});
- map.put("ん", new String[] {"nn"});
- map.put("が", new String[] {"ga"});
- map.put("ぎ", new String[] {"gi"});
- map.put("ぐ", new String[] {"gu"});
- map.put("げ", new String[] {"ge"});
- map.put("ご", new String[] {"go"});
- map.put("ざ", new String[] {"za"});
- map.put("じ", new String[] {"zi", "ji"});
- map.put("ず", new String[] {"zu"});
- map.put("ぜ", new String[] {"ze"});
- map.put("ぞ", new String[] {"zo"});
- map.put("だ", new String[] {"da"});
- map.put("ぢ", new String[] {"di"});
- map.put("づ", new String[] {"du"});
- map.put("で", new String[] {"de"});
- map.put("ど", new String[] {"do"});
- map.put("ば", new String[] {"ba"});
- map.put("び", new String[] {"bi"});
- map.put("ぶ", new String[] {"bu"});
- map.put("べ", new String[] {"be"});
- map.put("ぼ", new String[] {"bo"});
- map.put("ぱ", new String[] {"pa"});
- map.put("ぴ", new String[] {"pi"});
- map.put("ぷ", new String[] {"pu"});
- map.put("ぺ", new String[] {"pe"});
- map.put("ぽ", new String[] {"po"});
- map.put("きゃ", new String[] {"kya", "kilya", "kixlya"});
- map.put("きぃ", new String[] {"kyi", "kili", "kixi"});
- map.put("きゅ", new String[] {"kyu", "kilyu", "kixyu"});
- map.put("きぇ", new String[] {"kye", "kile", "kixe"});
- map.put("きょ", new String[] {"kyo", "kilyo", "kixyo"});
- map.put("くぁ", new String[] {"qa", "kula", "kuxa"});
- map.put("くぃ", new String[] {"qi", "kuli", "kuxi"});
- map.put("くぇ", new String[] {"qe", "kule", "kuxe"});
- map.put("くぉ", new String[] {"qo", "kulo", "kuxo"});
- map.put("しゃ", new String[] {"sha", "sya", "cilya" , "cixya", "silya", "sixya", "shalya", "shaxya"});
- map.put("しぃ", new String[] {"syi", "sili", "cili", "cixi", "sili", "sixi", "shili", "shixi"});
- map.put("しゅ", new String[] {"shu", "syu", "cilyu", "cixyu", "silyu" , "sixyu", "shilyu" , "shixyu"});
- map.put("しぇ", new String[] {"she", "sye", "cile" , "cixe", "sile" , "sixe", "shile" , "shixe"});
- map.put("しょ", new String[] {"sho", "syo", "cilyo" , "cixyo", "silyo" , "sixyo", "shilyo" , "shixyo"});
- map.put("ちゃ", new String[] {"cha", "cya", "tya", "chilya" , "chixya", "tilya" , "tixya"});
- map.put("ちぃ", new String[] {"cyi", "tyi", "chili" , "chixi", "tili" , "tixi"});
- map.put("ちゅ", new String[] {"chu", "cyu", "tyu", "chilyu", "chixyu", "tilyu" , "tixyo"});
- map.put("ちぇ", new String[] {"che", "cye", "tye", "chile", "chixe", "tile" , "tixe"});
- map.put("ちょ", new String[] {"cho", "cyo", "tyo", "chilo", "chixo", "tilo" , "tixo"});
- map.put("てゃ", new String[] {"tha", "telya" , "texya"});
- map.put("てぃ", new String[] {"thi", "teli" , "texi"});
- map.put("てゅ", new String[] {"thu", "telyu" , "texyu"});
- map.put("てぇ", new String[] {"the", "tele" , "texe"});
- map.put("てょ", new String[] {"tho", "telyo" , "texyo"});
- map.put("にゃ", new String[] {"nya", "nilya" , "nixya"});
- map.put("にぃ", new String[] {"nyi", "nili" , "nixi"});
- map.put("にゅ", new String[] {"nyu", "nilyu" , "nixyu"});
- map.put("にぇ", new String[] {"nye", "nile" , "nixe"});
- map.put("にょ", new String[] {"nyo", "nilyo" , "nixyo"});
- map.put("ひゃ", new String[] {"hya", "hilya" , "hixya"});
- map.put("ひぃ", new String[] {"hyi", "hili" , "hixi"});
- map.put("ひゅ", new String[] {"hyu", "hilyu" , "hixyu"});
- map.put("ひぇ", new String[] {"hye", "hile" , "hixe"});
- map.put("ひょ", new String[] {"hyo", "hilyo" , "hixyo"});
- map.put("ふぁ", new String[] {"fa", "hula" , "huxa"});
- map.put("ふぃ", new String[] {"fi", "huli" , "huxi"});
- map.put("ふぇ", new String[] {"fe", "hule" , "huxe"});
- map.put("ふぉ", new String[] {"fo", "hulo" , "huxo"});
- map.put("みゃ", new String[] {"mya", "milya" , "mixya"});
- map.put("みぃ", new String[] {"myi", "mili" , "mixi"});
- map.put("みゅ", new String[] {"myu", "milyu" , "mixyu"});
- map.put("みぇ", new String[] {"mye", "mile" , "mixe"});
- map.put("みょ", new String[] {"myo", "milyo" , "mixyo"});
- map.put("りゃ", new String[] {"rya", "rilya" , "rixya"});
- map.put("りぃ", new String[] {"ryi", "rili" , "rixi"});
- map.put("りゅ", new String[] {"ryu", "rilyu" , "rixyu"});
- map.put("りぇ", new String[] {"rye", "rile" , "rixe"});
- map.put("りょ", new String[] {"ryo", "rilyo" , "rixyo"});
- map.put("ぎゃ", new String[] {"gya", "gilya" , "gixya"});
- map.put("ぎぃ", new String[] {"gyi", "gili" , "gixi"});
- map.put("ぎゅ", new String[] {"gyu", "gilyu" , "gixyu"});
- map.put("ぎぇ", new String[] {"gye", "gile" , "gixe"});
- map.put("ぎょ", new String[] {"gyo", "gilyo" , "gixyo"});
- map.put("じゃ", new String[] {"ja", "jya", "zya", "jilya" , "jixya", "zilya" , "zixya"});
- map.put("じぃ", new String[] {"jyi", "zyi", "jili" , "jixi", "zili" , "zixi"});
- map.put("じゅ", new String[] {"ju", "jyu", "zyu", "jilyu" , "jixyu", "zilyu" , "zixyu"});
- map.put("じぇ", new String[] {"je", "jye", "zye", "jile" , "jixe", "zile" , "zixe"});
- map.put("じょ", new String[] {"jo", "jyo", "zyo", "jilyo" , "jixyo", "zilyo" , "zixyo"});
- map.put("ぢゃ", new String[] {"dya", "dilya" ,"dixya"});
- map.put("ぢぃ", new String[] {"dyi", "dili" , "dixi"});
- map.put("ぢゅ", new String[] {"dyu", "dilyu" , "dixyu"});
- map.put("ぢぇ", new String[] {"dye", "dile" , "dixe"});
- map.put("ぢょ", new String[] {"dyo", "dilyo" , "dixyo"});
- map.put("びゃ", new String[] {"bya", "bilya" , "bixya"});
- map.put("びぃ", new String[] {"byi", "bili" , "bixi"});
- map.put("びゅ", new String[] {"byu", "bilyu" , "bixyu"});
- map.put("びぇ", new String[] {"bye", "bile" , "bixe"});
- map.put("びょ", new String[] {"byo", "bilyo" , "bixyo"});
- map.put("ぴゃ", new String[] {"pya", "pilya" , "pixya"});
- map.put("ぴぃ", new String[] {"pyi", "pili" , "pixi"});
- map.put("ぴゅ", new String[] {"pyu", "pilyu" , "pixyu"});
- map.put("ぴぇ", new String[] {"pye", "pile" , "pixe"});
- map.put("ぴょ", new String[] {"pyo", "pilyo" , "pixyo"});
- map.put("ぁ", new String[] {"la", "xa"});
- map.put("ぅ", new String[] {"lu", "xu"});
- map.put("ぉ", new String[] {"lo", "xo"});
- @SuppressWarnings("resource")
- Scanner sc = new Scanner(System.in);
- List<String> answer = toRoma(sc.nextLine());
- System.out.println(answer);
- }
- public static List<String> toRoma(String line) {
- String[] hiragana = new String[line.length()];
- int total = 0;
- for(int i = 0; i < line.length(); i++) {
- hiragana[i] = line.substring(i, i+1);
- }
- List<String> result = new ArrayList<>();
- for(int i = 0; i < hiragana.length; i++) {
- String[] array = null;
- 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("ょ"))) {
- array = map.get(hiragana[i] + hiragana[i+1]);
- i += 1;
- } else if(hiragana[i].equals("っ")) {
- if(i + 1 < hiragana.length) {
- String[] tmpArray = map.get(hiragana[i+1]);
- array = new String[tmpArray.length + 2];
- array[0] = "ltu";
- array[1] = "xtu";
- for(int j = 0; j < tmpArray.length; j++) {
- array[j + 2] = tmpArray[j].toString().substring(0, 1);
- }
- } else {
- array = new String[] {"ltu", "xtu"};
- }
- } else if(hiragana[i].equals("ん")) {
- if(hiragana[i+1].equals("あ") || hiragana[i+1].equals("い") || hiragana[i+1].equals("う") || hiragana[i+1].equals("え") || hiragana[i+1].equals("お")) {
- array = map.get(hiragana[i]);
- } else {
- array = new String[] {"nn", "n"};
- }
- } else {
- array = map.get(hiragana[i]);
- }
- if(result.size() == 0){
- for(int j = 0; j < array.length; j++) {
- result.add(array[j]);
- }
- total = array.length;
- } else {
- total *= array.length;
- if(array.length != 1) {
- for(int j = 0; j < array.length - 1; j++) {
- for(int k = 0; k < total / array.length; k++) {
- result.add(result.get(k));
- }
- }
- }
- int m = 0;
- for(int j = 0; j < array.length; j++) {
- for(int k = 0; k < total / array.length; k++) {
- result.set(m, result.get(m) + array[j]);
- m += 1;
- }
- }
- }
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement