# Figurate Numbers v1.6.0 - Sonic Pi Web # Source: https://github.com/edelveart/figurate_numbers # Author: Edgar Delgado Vega # Bundle: multidimensional_figurate_numbers module FigurateNumbers;module Utils;module_function;def factorial_iter(num)t=1;(1..num).each do |i|t*=i;end;t;end;def binomial_coefficient(n,k)factorial_iter(n)/(factorial_iter(k)*factorial_iter(n-k));end;def rising_factorial(n,k)t=1;(n..(n+k-1)).each do |i|t*=i;end;t;end;def pseudo_rising_factorial(n,k)t=1;(n..(n+k-2)).each do |i|t*=i;end;t;end;def pseudo_pochhammer_function(n,k)(n..(n+k-2)).reduce(:*);end;def _validation_fnomial(n,k)raise ArgumentError,'n must be a non-negative Integer' unless n.is_a?(Integer)&&n>=0;raise ArgumentError,'k must be an Integer between 0 and n' unless k.is_a?(Integer)&&k.between?(0,n);end;def _calculate_fnomial(first,last,k)numerator=1;denominator=1;k.times do |i|numerator*=last[i];denominator*=first[i];gcd=numerator.gcd(denominator);numerator/=gcd;denominator/=gcd;end;[numerator,denominator];end;def figurate_binomial(n,k,seq)_validation_fnomial(n,k);k=[k,n-k].min;first=[];last=[];(1..n).each do |i|value=seq.next;first<n-k;end;numerator,denominator=_calculate_fnomial(first,last,k);denominator==1 ? numerator: Rational(numerator,denominator);end;end;end;module FigurateNumbers;module PAdicUtils;extend self;def prime?(n)return false if n<2;return true if n==2;return false if n.even?;divisor=3;while divisor*divisor<=n;return false if(n%divisor).zero?;divisor+=2;end;true;end;def first_n_primes(n)return [] if n<=0;return [2] if n==1;primes=[2];candidate=3;while primes.length0 ? a: -a;end;def generalized_k_dimensional_centered_hypertetrahedron(k,left_index=0)Enumerator.new do |y|((-1*left_index.abs)..Float::INFINITY).each do |n|y<0 ? (1+t+a): (1+t+a)*-1;end;def generalized_k_dimensional_centered_hyperoctahedron(k,left_index=0)Enumerator.new do |y|((-1*left_index.abs)..Float::INFINITY).each do |n|y<<1 if n==1;y<