From b5f39f294a72d6669cfdce810028e08ca8238e9a Mon Sep 17 00:00:00 2001 From: Jacob VanDomelen Date: Wed, 22 May 2019 11:41:46 -0700 Subject: [PATCH] Added continuous bracket. --- gemla/Cargo.toml | 1 + gemla/src/bracket/mod.rs | 26 ++++++++++++++++++++++ gemla/src/{tree/mod.rs => bracket/tree.rs} | 9 ++++---- gemla/src/main.rs | 17 ++------------ 4 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 gemla/src/bracket/mod.rs rename gemla/src/{tree/mod.rs => bracket/tree.rs} (66%) diff --git a/gemla/Cargo.toml b/gemla/Cargo.toml index 9399fad..5e5d079 100644 --- a/gemla/Cargo.toml +++ b/gemla/Cargo.toml @@ -5,3 +5,4 @@ authors = ["Jacob VanDomelen "] edition = "2018" [dependencies] +uuid = { version = "0.7", features = ["serde", "v4"] } \ No newline at end of file diff --git a/gemla/src/bracket/mod.rs b/gemla/src/bracket/mod.rs new file mode 100644 index 0000000..a3f1ca9 --- /dev/null +++ b/gemla/src/bracket/mod.rs @@ -0,0 +1,26 @@ +mod tree; + +use uuid::Uuid; + +fn build_tree(h: u32) -> Option> { + let mut result: Option> = None; + + if h != 0 { + result = Some(tree::concat_trees(Uuid::new_v4(), build_tree(h - 1), build_tree(h - 1))); + } + + result +} + +pub fn run_bracket() { + let mut height = 1; + let mut tree: tree::Tree = *build_tree(height).expect("Error getting result from build_tree."); + + loop { + println!("========================================="); + println!("Running bracket..."); + println!("{}", tree); + height += 1; + tree = *tree::concat_trees(Uuid::new_v4(), Some(Box::new(tree)), build_tree(height)); + } +} \ No newline at end of file diff --git a/gemla/src/tree/mod.rs b/gemla/src/bracket/tree.rs similarity index 66% rename from gemla/src/tree/mod.rs rename to gemla/src/bracket/tree.rs index 6fceae8..fb35e80 100644 --- a/gemla/src/tree/mod.rs +++ b/gemla/src/bracket/tree.rs @@ -1,14 +1,15 @@ use std::fmt; +use uuid::Uuid; pub struct Tree { - val: u32, + id: Uuid, left: Option>, right: Option> } -pub fn concat_trees(v: u32, l: Option>, r: Option>) -> Box { +pub fn concat_trees(v: Uuid, l: Option>, r: Option>) -> Box { Box::new(Tree { - val: v, + id: v, left: l, right: r }) @@ -23,6 +24,6 @@ impl fmt::Display for Tree { } }; - write!(f, "({} :{}|{})", self.val, node_str(&self.left), node_str(&self.right)) + write!(f, "({} :{}|{})", self.id, node_str(&self.left), node_str(&self.right)) } } \ No newline at end of file diff --git a/gemla/src/main.rs b/gemla/src/main.rs index e0ee01f..82fe9df 100644 --- a/gemla/src/main.rs +++ b/gemla/src/main.rs @@ -1,18 +1,5 @@ -mod tree; - -fn build_tree(h: u32) -> Option> { - let mut result: Option> = None; - - if h != 0 { - result = Some(tree::concat_trees(h, build_tree(h - 1), build_tree(h - 1))); - } - - result -} +mod bracket; fn main() { - let tree: tree::Tree = *build_tree(25).expect("Error getting result from build tree."); - - println!("Resulting tree from build_tree."); - println!("{}", tree); + bracket::run_bracket(); } \ No newline at end of file