commit dbc4153b7e5236f7b7a07af12ebeedb27937a49d Author: UndeadMaelys Date: Mon May 17 06:33:16 2021 +0200 Comitting JANUGE diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/januge.lua b/januge.lua new file mode 100644 index 0000000..76a8a5e --- /dev/null +++ b/januge.lua @@ -0,0 +1,308 @@ +-- enum helper +function Enum(tbl) + for i = 1, #tbl do + local v = tbl[i] + tbl[v] = i + end + return tbl +end + +COLOR = Enum { + "Black", + "Red", + "Green", + "Yellow", + "Blue", + "Purple", + "Cyan", + "LightGray", + "Gray", + "HighRed", + "HighGreen", + "HighYellow", + "HighBlue", + "HighPurple", + "HighCyan", + "White" +} + +function Colorize(Text,Color) + if Color ~= nil then + lColoredText = "\027[38;5;"..tostring(Color-1).."m"..Text + return lColoredText.."\027[0;m" + else + return Text + end +end + +arabic = { + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "0" +} +arabic[100] = "00" +arabic[1000] = "000" +arabic[10000] = "0000" + +romaji = { + "ichi", + "ni", + "san", + "yon", + "go", + "roku", + "nana", + "hachi", + "kyuu", + "juu" +} +romaji[100] = "hyaku" +romaji[1000] = "sen" +romaji[10000] = "man" + +kana = { + "いち", + "に", + "さん", + "よん", + "ご", + "ろく", + "なな", + "はち", + "きゅう", + "じゅう" +} +kana[100] = "ひゃく" +kana[1000] = "せん" +kana[10000] = "まん" + +kanji = { + "一", + "二", + "三", + "四", + "五", + "六", + "七", + "八", + "九", + "十" +} +kanji[100] = "百" +kanji[1000] = "千" +kanji[10000] = "万" + +function GetNumber(number,is_arabic) + + local nMan = math.floor(number/10000) + local man = "" + + space = "" + + if is_arabic then + if number >= 10000 then + man = nMan + end + else + if nMan > 1 then + man = data[nMan]..data[10000] + elseif nMan == 1 then + man = space..data[10000] + end + end + + local nSen = math.floor(number/1000)-nMan*10 + local sen = "" + + space = "" + + if is_arabic then + if number >= 1000 then + sen = nSen + end + else + if nSen > 1 then + sen = data[nSen]..data[1000] + elseif nSen == 1 then + sen = space..data[1000] + end + end + + local nHyaku = math.floor(number/100)-nSen*10-nMan*100 + local hyaku = data[nHyaku] or space..space + + space = "" + + if is_arabic then + if number >= 100 then + hyaku = nHyaku + end + else + if nHyaku > 1 then + hyaku = data[nHyaku]..data[100] + elseif nHyaku == 1 then + hyaku = space..data[100] + end + end + + local nJuu = math.floor(number/10)-nHyaku*10-nSen*100-nMan*1000 + local juu = data[nJuu] or space..space + + if is_arabic then + if number >= 10 then + juu = nJuu + end + else + if nJuu > 1 then + juu = data[nJuu]..data[10] + elseif nJuu == 1 then + juu = space..data[10] + end + end + + local nSuuji = number-nJuu*10-nHyaku*100-nSen*1000-nMan*10000 + local suuji = data[nSuuji] or space..space + + + if is_arabic then + if number >= 0 then + suuji = nSuuji + end + end + + return man, sen, hyaku, juu, suuji +end + +function GetData(mode) + if mode == 0 then + data = arabic + elseif mode == 1 then + data = romaji + elseif mode == 2 then + data = kana + elseif mode == 3 then + data = kanji + end +end + + + +-- PROGRAM START + +print("Specific Mode?") +print(" (0) Arabic") +print(" (1) Japanese Romaji") +print(" (2) Japanese Kana") +print(" (3) Japanese Kanji") + +setmode = io.read() + +print("Powers of 10 colored? (Y/n)") + +coloriz = io.read() + +print("Show equivalences? (Y/n)") + +skip = io.read() + +print("Ready?") +io.read() + +if string.upper(coloriz) == "N" then + COLOR = {} +end + +-- ENTER ETERNAL LOOP +while 1 do + + -- PREPARE + os.execute("clear") + modes = 3 + + arabic_script = false + if setmode == "0" then + mode = 0 + arabic_script = true + print("- ARABIC MODE -") + elseif setmode == "1" then + mode = 1 + print("- ROMAJI MODE -") + elseif setmode == "2" then + mode = 2 + print("- KANA MODE -") + elseif setmode == "3" then + mode = 3 + print("- KANJI MODE -") + else + mode = math.random(modes) + print("- RANDOM MODE -") + end + GetData(mode) + number = math.random(99999) + + -- ASK + print("") + e, d, c, b, a = GetNumber(number,arabic_script) + print( + Colorize( e, COLOR.HighGreen).. + Colorize( d, COLOR.HighPurple).. + Colorize( c, COLOR.HighRed).. + Colorize( b, COLOR.HighYellow).. + Colorize( a, COLOR.HighCyan) + ) + io.read() + + if string.upper(skip) ~= "N" then + -- SHOW SOLUTION + GetData(0) + e, d, c, b, a = GetNumber(number,true) + print( + " Arabic: ".. + Colorize( e, COLOR.HighGreen).. + Colorize( d, COLOR.HighPurple).. + Colorize( c, COLOR.HighRed).. + Colorize( b, COLOR.HighYellow).. + Colorize( a, COLOR.HighCyan) + ) + + GetData(1) + e, d, c, b, a = GetNumber(number,false) + print( + " Romaji: ".. + Colorize( e, COLOR.HighGreen).. + Colorize( d, COLOR.HighPurple).. + Colorize( c, COLOR.HighRed).. + Colorize( b, COLOR.HighYellow).. + Colorize( a, COLOR.HighCyan) + ) + GetData(2) + e, d, c, b, a = GetNumber(number,false) + print( + " Kana: ".. + Colorize( e, COLOR.HighGreen).. + Colorize( d, COLOR.HighPurple).. + Colorize( c, COLOR.HighRed).. + Colorize( b, COLOR.HighYellow).. + Colorize( a, COLOR.HighCyan) + ) + GetData(3) + e, d, c, b, a = GetNumber(number,false) + print( + " Kanji: ".. + Colorize( e, COLOR.HighGreen).. + Colorize( d, COLOR.HighPurple).. + Colorize( c, COLOR.HighRed).. + Colorize( b, COLOR.HighYellow).. + Colorize( a, COLOR.HighCyan) + ) + io.read() + end +end +