Function calculate_splits

Source
pub fn calculate_splits(height: u64) -> Vec<(Stack, Stack)>
Expand description

Calculate all possibilities to split a number into two parts, where the sum of the parts is the original number, accounting for symmetry.

ยงExamples

use nimlib::{nimbers::calculate_splits, Stack};

assert_eq!(calculate_splits(0), vec![]);
assert_eq!(calculate_splits(1), vec![]);
assert_eq!(calculate_splits(2), vec![(Stack(1), Stack(1))]);
assert_eq!(calculate_splits(3), vec![(Stack(1), Stack(2))]);
assert_eq!(calculate_splits(4), vec![(Stack(1), Stack(3)), (Stack(2), Stack(2))]);
assert_eq!(calculate_splits(5), vec![(Stack(1), Stack(4)), (Stack(2), Stack(3))]);
assert_eq!(calculate_splits(6), vec![(Stack(1), Stack(5)), (Stack(2), Stack(4)), (Stack(3), Stack(3))]);