Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import randint
- def satuan(x):
- return ["", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan"][x]
- def special(spc):
- def partial(x):
- if x == 0:
- return ""
- if x == 1:
- return ''.join(["se", spc])
- else:
- return ' '.join([satuan(x), spc])
- return partial
- def spell(val, baseline="ribu"):
- belasan = special("belas")
- specials = [special(x) for x in ["", "puluh", "ratus", baseline]]
- if val in ["", "0"]:
- return ""
- if int(val) < 10:
- return satuan(int(val)) + " "
- if 10 < int(val) < 20:
- return belasan(int(val) % 10) + " "
- return ' '.join([specials[len(val) - 1](int(val[0])), spell(val[1:])])
- def lazyCleaner(s):
- return ' '.join([_ for _ in s.split(" ") if _ != ""])
- def spellExpand(VAL):
- if VAL == "0":
- return "nol"
- baseline = ["", "ribu", "juta", "milyar", "triliyun"][:len(VAL) / 3 + 1]
- slc = [0] + [_ for _ in reversed(range(len(VAL), 0, -3))]
- vals = [VAL[slc[i]:slc[i+1]] for i in xrange(len(slc) - 1)]
- spells = [''.join([spell(val), base]) for val, base in zip(vals, reversed(baseline))]
- return lazyCleaner(' '.join(spells)).replace("satu ribu", "seribu")
- def testing():
- for _ in xrange(10):
- v = 1001001
- print spellExpand(str(v))
- print
- if __name__ == '__main__':
- testing()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement