Method: MoreMath::CantorPairingFunction.cantor_pairing_inv

Defined in:
lib/more_math/cantor_pairing_function.rb

.cantor_pairing_inv(c, n = 2) ⇒ Object

Raises:

  • (ArgumentError)


33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/more_math/cantor_pairing_function.rb', line 33

def cantor_pairing_inv(c, n = 2)
  raise ArgumentError, "n is required to be >= 2" unless n >= 2
  result = []
  begin
    q = CantorPairingFunction.cantor_pairing_inv_q(c)
    y = c - CantorPairingFunction.cantor_pairing_inv_f(q)
    x = q - y
    result.unshift y
    c = x
    n -= 1
  end until n <= 1
  result.unshift x
end