-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patheuler17.rb
More file actions
62 lines (50 loc) · 2 KB
/
euler17.rb
File metadata and controls
62 lines (50 loc) · 2 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
def convert_int_to_chars(start_num, end_num)
numbers = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
teens = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']
tens = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
num = end_num
num_of_chars = 0
while num >= start_num
if num == 1000
num_of_chars += "onethousand".length
elsif num >= 100 && num < 1000
num_of_chars += hundreds(num)
elsif num >= 10 && num < 100
num_of_chars += tens(num)
else
num_of_chars += numbers[num].length
end
num -= 1
end
num_of_chars
end
def hundreds(num)
numbers = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
teens = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']
tens = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
num_array = num.to_s.split('').map { |x| x.to_i }
num_string = "#{numbers[num_array[0]]} hundred"
if num_array[1] == 0 && num_array[2] == 0
return num_string.gsub(' ', '').length
elsif num_array[1] == 1
num_string += "and #{tens[num_array[2]]}"
return num_string.gsub(' ', '').length
else
num_string += "and #{teens[num_array[1]]} #{numbers[num_array[2]]}"
return num_string.gsub(' ', '').length
end
end
def tens(num)
numbers = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
teens = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']
tens = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
num_array = num.to_s.split('').map { |x| x.to_i }
if num_array[0] == 1
num_string = "#{tens[num_array[1]]}"
return num_string.gsub(' ', '').length
else
num_string = "#{teens[num_array[0]]} #{numbers[num_array[1]]}"
return num_string.gsub(' ', '').length
end
end
puts convert_int_to_chars(1, 1000)