1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

/// Factorial
///
/// <a href="https://en.wikipedia.org/wiki/Factorial">https://en.wikipedia.org/wiki/Factorial</a>
pub fn factorial(f: u32) -> u64
{
	let mut n : u64 = f as u64;
    let mut result : u64 = 1;
    while n > 0
    {
        result = result * n;
        n = n - 1;
    }
    result
}

/// Binomial coefficient
///
/// <a href="https://en.wikipedia.org/wiki/Binomial_coefficient">https://en.wikipedia.org/wiki/Binomial_coefficient</a>
pub fn binom(n: u32, k: u32) -> u32
{
	(factorial(n) / (factorial(k) * factorial(n - k))) as u32
}


pub fn perm(_n: u32, _r: u32) -> u32
{
//	let n_fact : u32 = n.factorial();
//	let r_fact : u32 = r_factorial();
//	let diff_fact : u32 = (n - r).factorial();
	unimplemented!()
}

pub fn comb<'a>(_n: &'a u32, _r: &'a u32) -> u32
{
	unimplemented!()
}