-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprob_17.rb
More file actions
executable file
·37 lines (31 loc) · 765 Bytes
/
prob_17.rb
File metadata and controls
executable file
·37 lines (31 loc) · 765 Bytes
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
#!/usr/bin/env ruby
# building the dictionary
$num2literal = Hash.new
File.open('prob_17.dat', 'r').each {|line|
num, literal = line.chomp.split(' ')
$num2literal[num.to_i] = literal
}
def convertNumberToLiteral number
# Support from 1 upto 1,000
return "" if number<1 or number>1000
return "one"+"thousand" if number==1000
result = ""
if number>=100
result += $num2literal[number/100]
result += "hundred"
number %= 100
result += "and" if number!=0
end
return result if number==0
if number<=20
result += $num2literal[number]
else
result += $num2literal[number/10*10]
number %= 10
result += $num2literal[number] if number>0
end
result
end
length = 0
(1..1000).each {|num| length += convertNumberToLiteral(num).length}
puts length