Integer
整数かどうか判定したい
p 10.integer? p 1.1.integer?
整数か偶数か判定したい
# 偶数ならtrue,奇数ならfalse p 10.even?
整数か奇数か判定したい
# 奇数ならtrue,偶数ならfalse p 11.odd?
整数の絶対値を取得したい
p 10.abs p -10.abs
整数の値が0かを判定したい
p 0.zero? p 10.zero?
2つの整数の最大公約数がほしい
p 2.gcd(7)
2つの整数の最大公約数と最小公倍数がほしい
p 3.gcdlcm(7)
起点となる整数から1ずつ減らしながらminまでブロックを繰り返したい
# self.downto(min) {|n|} 10.downto(1) {|n| p n}
起点となる整数から1ずつ増やしながらmaxまでブロックを繰り返したい
# self.upto(max) {|n|} 1.upto(10) {|n| p n}
起点となる整数から指定したstep数ずつ加算しながらlimitまでブロックを繰り返したい
# self.step(limit, step = 1) {|n|} 2.step(10, 2) {|n| p n}
Integer回数だけブロックを繰り返したい。ただし、回数に指定できるのは正の整数のみ
カウントは0からスタートする
# self.times {|n|} 10.times {|n| p n}
10進法から2進法、8進法、16進法に基数変換したい
String#%はsprintfと同じ
# 10進法<=>2進法 "%b" % 251 251.to_s(2) 0b11111011.to_s # 10進法<=>8進法 "%o" % 8 8.to_s(8) 010.to_s # 10進法<=>16進法 "%x" % 251 251.to_s(16) 0xfb.to_s # 任意の位取り記法文字列を整数へ変換したい "6z".to_i(36) "18b".to_i(12) "18b".to_i(16) "101100".to_i(3)
ちなみにto_sの引数は2 <= x <= 36まで可能(この範囲を超えた引数を与えるとエラー)
階乗冪(かいじょうべき)、順列、階乗、組み合わせの値を求めたい
結論:自前で実装しろ。
モンキーパッチで書くならこんな感じ
class Integer def falling_factorial(m) return (0..(m - 1)).inject(1) {|r, k| r * (self - k)} end def rising_factorial(m) return (0..(m - 1)).inject(1) {|r, k| r * (self + k)} end alias permutation falling_factorial def factorial return self.permutation self end def combination(m) return (self.permutaton m) / (m.permutation m) end end