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

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

Raises:

  • (ArgumentError)


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

Raises:

  • (ArgumentError)


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