module Combinatorial::Diagonal

Public Instance Methods

co_diagonal(n, m) { |difference_seq(0, a, n)| ... } click to toggle source
# File lib/algebra/combinatorial.rb, line 87
def co_diagonal(n, m)
  rep_comb(n+1, m-1) do |a|
    yield difference_seq(0, a, n)
  end
end
diagonal_cone(n, m) { |a| ... } click to toggle source
# File lib/algebra/combinatorial.rb, line 79
def diagonal_cone(n, m)
  0.upto n do |i|
    co_diagonal(i, m) do |a|
      yield a
    end
  end
end

Private Instance Methods

difference_seq(n0, ary, n1) click to toggle source
# File lib/algebra/combinatorial.rb, line 93
def difference_seq(n0, ary, n1)
  x = n0
  a = []
  ary.each do |y|
    a.push y - x
    x = y
  end
  a.push n1 - x
  a
end