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
|
# File 'lib/n_2_w/int.rb', line 3
def self.one(x, s=" ")
a=x.to_s.split("")
a.map! { |x| x.to_i }
one={0=>"zero",1=>"one", 2=>"two", 3=>"three", 4=>"four", 5=>"five", 6=>"six", 7=>"seven", 8=>"eight", 9=>"nine"}
two_i={1=>"eleven", 2=>"twelve", 3=>"thirteen", 4=>"fourteen", 5=>"fifteen", 6=>"sixteen", 7=>"seventeen", 8=>"eighteen", 9=>"nineteen"}
two_r={1=>"ten",2=>"twenty",3=>"thirty",4=>"forty",5=>"fifty",6=>"sixty",7=>"seventy",8=>"eighty",9=>"ninety"}
tn=Proc.new do if a[-1]==0
two_r[a[-2]]
elsif a[-2]==1
two_i[a[-1]]
else
two_r[a[-2]]+s+one(a[-1])
end
end
if a.length==1
return one[a[-1]]
elsif a.length==2
if a[-1]==0 && a[-2]==0
return "zero"
elsif a[-2]==0 && a[-1]!=0
return one[a[-1]]
else
return tn.call
end
elsif a.length==3
if (a[-3]!=0)
if a[-2]!=0
return (one[a[-3]]+" hundred and "+tn.call)
elsif a[-2]==0 && a[-1]!=0
return one[a[-3]]+" hundred and "+one[a[-1]]
else
return one[a[-3]]+" hundred"
end
elsif (a[-3]==0 && a[-2]!=0)
return tn.call
elsif (a[-3]==0 && a[-2]==0 && a[-1]==0)
return ""
elsif (a[-3]==0 && a[-2]==0 && a[-1]!=0)
return one[a[-1]]
end
end
end
|