Class: Integer
Instance Method Summary collapse
- #bit(bit) ⇒ Object
- #bit?(bit) ⇒ Boolean
- #bit_clear(bit) ⇒ Object
- #bitmask(mask) ⇒ Object
- #bitmask?(mask) ⇒ Boolean
- #factorial ⇒ Object
- #factors ⇒ Object
- #of(&block) ⇒ Object
- #roman_numeral ⇒ Object
- #to_time ⇒ Object (also: #to_t)
Instance Method Details
#bit(bit) ⇒ Object
10 11 12 13 14 15 16 17 18 |
# File 'lib/lite/ruby/integer.rb', line 10 def bit(bit) if bit.negative? mask = (1 << ~bit) self & ~mask else mask = (1 << bit) self | mask end end |
#bit?(bit) ⇒ Boolean
20 21 22 23 |
# File 'lib/lite/ruby/integer.rb', line 20 def bit?(bit) mask = (1 << bit) (self & mask) != 0 end |
#bit_clear(bit) ⇒ Object
25 26 27 28 |
# File 'lib/lite/ruby/integer.rb', line 25 def bit_clear(bit) mask = (1 << bit) self & ~mask end |
#bitmask(mask) ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/lite/ruby/integer.rb', line 30 def bitmask(mask) if mask.negative? self & mask else self | mask end end |
#bitmask?(mask) ⇒ Boolean
38 39 40 |
# File 'lib/lite/ruby/integer.rb', line 38 def bitmask?(mask) (self & mask) != 0 end |
#factorial ⇒ Object
42 43 44 45 46 |
# File 'lib/lite/ruby/integer.rb', line 42 def factorial return 1 if zero? 2.upto(self).inject(1) { |acc, i| acc * i } end |
#factors ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/lite/ruby/integer.rb', line 48 def factors limit = Math.sqrt(self).floor (1..limit).each_with_object([]) do |i, array| next unless (self % i).zero? sq = (self / i) array.push(i) array.push(sq) if sq != i end end |
#of(&block) ⇒ Object
60 61 62 |
# File 'lib/lite/ruby/integer.rb', line 60 def of(&block) Array.new(self, &block) end |
#roman_numeral ⇒ Object
64 65 66 67 68 69 |
# File 'lib/lite/ruby/integer.rb', line 64 def roman_numeral return '' if zero? return "-#{(-self).roman_numeral}" if negative? ROMAN_NUMERALS.each { |key, val| break "#{key}#{(self - val).roman_numeral}" if val <= self } end |