blob: 78d7986a692303d01313381b495528d36834087c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
onesWords=: 'zero' ; 'one' ; 'two' ; 'three' ; 'four' ; 'five' ; 'six' ; 'seven' ; 'eight' ; 'nine'
tensWords=: 'twenty' ; 'thirty' ; 'forty' ; 'fifty' ; 'sixty' ; 'seventy' ; 'eighty' ; 'ninety'
teensWords=: 'ten' ; 'eleven' ; 'twelve' ; 'thirteen' ; 'fourteen' ; 'fifteen' ; 'sixteen' ; 'seventeen' ; 'eighteen' ; 'nineteen'
hundredPart=: monad define
if. y=0 do.
''
else.
(>y{onesWords), ' hundred '
end.
)
tenPart=: dyad define
if. x=0 do.
>y{onesWords
elseif. x=1 do.
>y{teensWords
elseif. (x>1)*.(y>0) do.
(>(x-2){tensWords),'-',>y{onesWords
elseif. y=0 do.
>(x-2){tensWords
end.
)
num2text=: monad define
thousands=. <.y%1000
y0=.y-1000*thousands
hundreds=. <.y0%100
y1=.y0-100*hundreds
tens=. <.y1%10
y2=.y1-10*tens
ones=. <.y2
h =. hundredPart hundreds
t =. tens tenPart ones
if. thousands do.
'one thousand'
elseif. (hundreds>0)*.y1>0 do.
h, 'and ', t
elseif. (hundreds>0)*.y1=0 do.
h
end.
)
letterCount=: +/@(2&=)@(' -'&i.)@num2text
|