Top Level Namespace
Defined Under Namespace
Classes: Integer
Constant Summary collapse
- NEW_ROMAN_ARRAY =
[[1000, 'M'], [ 900, 'CM'], [ 500, 'D'], [ 400, 'CD'], [ 100, 'C'], [ 90, 'XC'], [ 50, 'L'], [ 40, 'XL'], [ 10, 'X'], [ 9, 'IX'], [ 5, 'V'], [ 4, 'IV'], [ 1, 'I']]
- OLD_ROMAN_ARRAY =
[[1000, 'M'], [ 500, 'D'], [ 100, 'C'], [ 50, 'L'], [ 10, 'X'], [ 5, 'V'], [ 1, 'I']]
- NUM_WORD_PAIRS =
[[10 ** 12, 'trillion'], [10 ** 9, 'billion'], [10 ** 6, 'million'], [10 ** 3, 'thousand'], [10 ** 2, 'hundred'], [90, 'ninety'], [80, 'eighty'], [70, 'seventy'], [60, 'sixty'], [50, 'fifty'], [40, 'fourty'], [30, 'thirty'], [20, 'twenty'], [19, 'nineteen'], [18, 'eighteen'], [17, 'seventeen'], [16, 'sixteen'], [15, 'fifteen'], [14, 'fouteen'], [13, 'thirteen'], [12, 'twelve'], [11, 'eleven'], [10, 'ten'], [ 9, 'nine'], [ 8, 'eight'], [ 7, 'seven'], [ 6, 'six'], [ 5, 'five'], [ 4, 'four'], [ 3, 'three'], [ 2, 'two'], [ 1, 'one']]
Instance Method Summary collapse
- #commas(number) ⇒ Object
- #english_number(num) ⇒ Object
- #factorial(year) ⇒ Object
- #new_roman(number) ⇒ Object
- #old_roman(number) ⇒ Object
Instance Method Details
#commas(number) ⇒ Object
1 2 3 |
# File 'lib/methods/commas.rb', line 1 def commas(number) number.to_s.gsub(/(?<=\d)(?=(?:\d{3})+\z)/, ',') end |
#english_number(num) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/methods/english_number.rb', line 34 def english_number(num) raise ArgumentError.new("Input be greater than or equal to 0.") if num < 0 return 'one' if num == 1 to_words_array = [] NUM_WORD_PAIRS.each do |pair| if num > 99 lead_digits = (num % (pair[0] * 1000)) / pair[0] to_words_array << english_number(lead_digits) if lead_digits > 0 end to_words_array << pair[1] if (num / pair[0]) > 0 num %= pair[0] end to_words_array.join(' ') end |
#factorial(year) ⇒ Object
1 2 3 4 |
# File 'lib/methods/factorial.rb', line 1 def factorial(year) raise ArgumentError.new("Input be greater than or equal to 0.") if year < 0 year <= 1 ? 1 : year * factorial(year-1) end |
#new_roman(number) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/methods/new_roman.rb', line 15 def new_roman(number) string = '' NEW_ROMAN_ARRAY.each do |pair| string += pair[1] * (number / pair[0]) number %= pair[0] end string end |
#old_roman(number) ⇒ Object
9 10 11 12 13 14 15 16 |
# File 'lib/methods/old_roman.rb', line 9 def old_roman(number) string = '' OLD_ROMAN_ARRAY.each do |pair| string += pair[1] * (number / pair[0]) number %= pair[0] end string end |