From 9a57953f7db4c415ce4d3b9a98a605d1a158c448 Mon Sep 17 00:00:00 2001 From: WinterPancake Date: Sun, 6 Jul 2025 11:33:47 -0500 Subject: [PATCH 1/3] Added tetrahedral_number.rs --- DIRECTORY.md | 1 + src/math/mod.rs | 2 ++ src/math/tetrahedral_number.rs | 30 ++++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 src/math/tetrahedral_number.rs diff --git a/DIRECTORY.md b/DIRECTORY.md index 564a7813807..a6f0868c383 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -253,6 +253,7 @@ * [Sum Of Harmonic Series](https://github.com/TheAlgorithms/Rust/blob/master/src/math/sum_of_harmonic_series.rs) * [Sylvester Sequence](https://github.com/TheAlgorithms/Rust/blob/master/src/math/sylvester_sequence.rs) * [Tanh](https://github.com/TheAlgorithms/Rust/blob/master/src/math/tanh.rs) + * [Tetrahedral Number](https://github.com/TheAlgorithms/Rust/blob/master/src/math/tetrahedral_number.rs) * [Trapezoidal Integration](https://github.com/TheAlgorithms/Rust/blob/master/src/math/trapezoidal_integration.rs) * [Trial Division](https://github.com/TheAlgorithms/Rust/blob/master/src/math/trial_division.rs) * [Trig Functions](https://github.com/TheAlgorithms/Rust/blob/master/src/math/trig_functions.rs) diff --git a/src/math/mod.rs b/src/math/mod.rs index 7407465c3b0..e7aa363c40e 100644 --- a/src/math/mod.rs +++ b/src/math/mod.rs @@ -76,6 +76,7 @@ mod sum_of_geometric_progression; mod sum_of_harmonic_series; mod sylvester_sequence; mod tanh; +mod tetrahedral_number; mod trapezoidal_integration; mod trial_division; mod trig_functions; @@ -168,6 +169,7 @@ pub use self::sum_of_geometric_progression::sum_of_geometric_progression; pub use self::sum_of_harmonic_series::sum_of_harmonic_progression; pub use self::sylvester_sequence::sylvester; pub use self::tanh::tanh; +pub use self::tetrahedral_number::tetrahedral_number; pub use self::trapezoidal_integration::trapezoidal_integral; pub use self::trial_division::trial_division; pub use self::trig_functions::cosine; diff --git a/src/math/tetrahedral_number.rs b/src/math/tetrahedral_number.rs new file mode 100644 index 00000000000..6bff6467347 --- /dev/null +++ b/src/math/tetrahedral_number.rs @@ -0,0 +1,30 @@ +// Tetrahedral Numbers: Function to the Nth Tetrahedral Number +// Wikipedia Reference : https://en.wikipedia.org/wiki/Tetrahedral_number +use num_bigint::BigUint; +pub fn tetrahedral_number(n: u64) -> BigUint { + let m: BigUint = (((n) * (n + 1) * (n + 2)) / 6).into(); + m +} + +#[cfg(test)] +mod tests { + use super::*; + + macro_rules! test_tetrahedral_number { + ($($name:ident: $inputs:expr,)*) => { + $( + #[test] + fn $name() { + let (n, expected) =$inputs; + assert_eq!(tetrahedral_number(n), expected); + } + )* + } + } + + test_tetrahedral_number! { + input_6: (6, BigUint::from(56u32)), + input_8: (8, BigUint::from(120u32)), + input_34: (34, BigUint::from(7140u32)), + } +} From 032de856f667ece8a7891a59d673dde71ced0496 Mon Sep 17 00:00:00 2001 From: WinterPancake Date: Mon, 7 Jul 2025 12:26:35 -0500 Subject: [PATCH 2/3] Added comments explaining what the module provides. Removed BigUint for being overkill. Removed the use and returning of the variable m. Renamed the names of the test cases to something more logical. --- src/math/tetrahedral_number.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/math/tetrahedral_number.rs b/src/math/tetrahedral_number.rs index 6bff6467347..6a2ac5d81cc 100644 --- a/src/math/tetrahedral_number.rs +++ b/src/math/tetrahedral_number.rs @@ -1,9 +1,12 @@ // Tetrahedral Numbers: Function to the Nth Tetrahedral Number // Wikipedia Reference : https://en.wikipedia.org/wiki/Tetrahedral_number -use num_bigint::BigUint; -pub fn tetrahedral_number(n: u64) -> BigUint { - let m: BigUint = (((n) * (n + 1) * (n + 2)) / 6).into(); - m +// +// This program provides a function to calculate the nth triangular +// number defined by T_n = 1 + 2 + ... + n = (n(n + 1)(n + 2))/6 = +// (n + 2) choose 3. + +pub fn tetrahedral_number(n: u64) -> u64 { + ((n) * (n + 1) * (n + 2)) / 6 } #[cfg(test)] @@ -23,8 +26,11 @@ mod tests { } test_tetrahedral_number! { - input_6: (6, BigUint::from(56u32)), - input_8: (8, BigUint::from(120u32)), - input_34: (34, BigUint::from(7140u32)), + input_0: (0, 0), + input_1: (1, 1), + input_2: (6, 56), + input_3: (8, 120), + input_4: (11, 286), + input_5: (34, 7140), } } From eb7b39467d774dd05014d2ab03b9e733a137991a Mon Sep 17 00:00:00 2001 From: WinterPancake Date: Mon, 7 Jul 2025 12:30:52 -0500 Subject: [PATCH 3/3] fixed fmt --- src/math/tetrahedral_number.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/math/tetrahedral_number.rs b/src/math/tetrahedral_number.rs index 6a2ac5d81cc..205e00ec745 100644 --- a/src/math/tetrahedral_number.rs +++ b/src/math/tetrahedral_number.rs @@ -6,7 +6,7 @@ // (n + 2) choose 3. pub fn tetrahedral_number(n: u64) -> u64 { - ((n) * (n + 1) * (n + 2)) / 6 + ((n) * (n + 1) * (n + 2)) / 6 } #[cfg(test)]