Z18554

{
    "Z1K1": "Z2",
    "Z2K1": {
        "Z1K1": "Z6",
        "Z6K1": "Z18554"
    },
    "Z2K2": {
        "Z1K1": "Z14",
        "Z14K1": "Z18546",
        "Z14K3": {
            "Z1K1": "Z16",
            "Z16K1": "Z610",
            "Z16K2": "def Z18546(Z18546K1):\n    # define the units and tens place\n    ones = [\"\", \"satu \", \"dua \", \"tiga \", \"empat \", \"lima \", \"enam \", \"tujuh \", \"delapan \", \"sembilan \", \"sepuluh \", \"sebelas \", \"dua belas \", \"tiga belas \", \"empat belas \", \"lima belas \", \"enam belas \", \"tujuh belas \", \"delapan belas \", \"sembilan belas \"]\n    tens = [\"\", \"\", \"dua puluh\", \"tiga puluh\", \"empat puluh\", \"lima puluh\", \"enam puluh\", \"tujuh puluh\", \"delapan puluh\", \"sembilan puluh\"]\n    units = [(\"kuintiliun\", 1_000_000_000_000_000_000), (\"kuadriliun\", 1_000_000_000_000_000), (\"triliun\", 1_000_000_000_000), (\"miliar\", 1_000_000_000), (\"juta\", 1_000_000), (\"ribu\", 1_000), (\"ratus\", 100), (\"\", 1)]\n\n    # function to convert numbers less than 1000 to words\n    def words(Z18546K1):\n        if Z18546K1 == 0:\n            return \"\"\n        elif Z18546K1 \u003C= 19:\n            return ones[Z18546K1]\n        elif Z18546K1 \u003C= 99:\n            tens_unit = tens[Z18546K1 // 10]\n            ones_unit = ones[Z18546K1 % 10]\n            return tens_unit + \" \" + ones_unit if ones_unit else tens_unit\n        elif Z18546K1 \u003C= 199:\n            return \"seratus \" + words(Z18546K1 % 100)\n        else:\n            return ones[Z18546K1 // 100] + \"ratus \" + words(Z18546K1 % 100)\n\n    # convert numbers to words\n    if Z18546K1 == 0:\n        return \"nol\"\n    elif Z18546K1 \u003C 0:\n        return \"minus \" + Z18546(-Z18546K1)\n    else:\n        result = \"\"\n        for unit_name, factor in units:\n            count, Z18546K1 = divmod(Z18546K1, factor)\n            if count \u003E 999:\n                #ERROR: number is too large for this algorithm\n                return \"ERROR: number is too large for this algorithm\"\n            if count \u003E 0:\n                if factor == 1000:\n                    if count == 1:\n                        result = result + \" seribu\"\n                    else:\n                        result = result + \" \" + words(count) + unit_name\n                elif factor == 100:\n                    if count == 1:\n                        result = result + \" seratus\"\n                    else:\n                        result = result + \" \" + ones[count] + unit_name\n                elif factor == 1:\n                    result = result + \" \" + words(count) + unit_name\n                else:\n                    result = result + \" \" + words(count) + unit_name\n        if (result.startswith(\" \")): result = result[1:]\n        return result.strip()"
        }
    },
    "Z2K3": {
        "Z1K1": "Z12",
        "Z12K1": [
            "Z11",
            {
                "Z1K1": "Z11",
                "Z11K1": "Z1002",
                "Z11K2": "Indonesian cardinal, python"
            },
            {
                "Z1K1": "Z11",
                "Z11K1": "Z1004",
                "Z11K2": "cardinal en indonésien, en Python"
            },
            {
                "Z1K1": "Z11",
                "Z11K1": "Z1078",
                "Z11K2": "Kardinal Indonesia, python"
            }
        ]
    },
    "Z2K4": {
        "Z1K1": "Z32",
        "Z32K1": [
            "Z31"
        ]
    },
    "Z2K5": {
        "Z1K1": "Z12",
        "Z12K1": [
            "Z11"
        ]
    }
}