|
|
1.1 root 1: procedure spell(n)
2: local m
3: n := integer(n)
4: return (
5: if n <= 12 then
6: "0zero,1one,2two,3three,4four,5five,6six,7seven,8eight,_
7: 9nine,10ten,11eleven,12twelve," ? {
8: tab(find(n))
9: move(*n)
10: tab(upto(","))
11: }
12: else if n <= 19 then
13: spell(n[2] || "0") ?
14: (if ="for" then "four" else tab(find("ty"))) || "teen"
15: else if n <= 99 then
16: "2twen,3thir,4for,5fif,6six,7seven,8eigh,9nine," ? {
17: tab(upto(n[1]))
18: move(1)
19: tab(upto(",")) || "ty" ||
20: if n[2] ~= 0 then "-" || spell(n[2])
21: }
22: else if n <= 999 then
23: spell(n[1]) || " hundred" ||
24: (if (m := n[2+:2]) ~= 0 then " and " || spell(m))
25: else if n <= 999999999 then
26: spell(n[1:-3]) ?
27: (tab(find("thousand")) || (move(8) & "million") | "") ||
28: tab(0) ||
29: " thousand" ||
30: (if (m := n[-3:0]) ~= 0 then ", " || spell(m))
31: else
32: "number too large"
33: )
34: end
35:
36: procedure spellw(n)
37: write(n, " ", spell(n))
38: return
39: end
40:
41: procedure main()
42: every spellw(1 to 25)
43: every spellw(30 to 110 by 3)
44: spellw(945123342)
45: every spellw(10000000 to 10000500)
46: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.