potential task formulation
This commit is contained in:
parent
58e6f57f77
commit
f03541d056
|
@ -155,11 +155,19 @@ impl Expression {
|
||||||
let mut brace_groups_texts: Vec<String> = Vec::new();
|
let mut brace_groups_texts: Vec<String> = Vec::new();
|
||||||
let mut children: Vec<Expression> = Vec::new();
|
let mut children: Vec<Expression> = Vec::new();
|
||||||
|
|
||||||
|
// 1 brace group per possible combination, by default, this is only (), so 1 iteration.
|
||||||
|
// This is still O(n¹)
|
||||||
for brace_group in brace_groups {
|
for brace_group in brace_groups {
|
||||||
for pair in brace_group {
|
for pair in brace_group {
|
||||||
let text = &expression_text[pair.0..pair.1 + 1];
|
let text = &expression_text[pair.0..pair.1 + 1];
|
||||||
let text = &text[1..text.len() - 1];
|
let text = &text[1..text.len() - 1];
|
||||||
|
#[cfg(debug_assertions)]
|
||||||
dbg!(text);
|
dbg!(text);
|
||||||
|
brace_groups_texts.push(text.to_string());
|
||||||
|
// we have the expression_text, now we just need to get the task until we can
|
||||||
|
// pass these parameters into Expression::new(). This is the recursive part.
|
||||||
|
let possible_task = &expression_text[..pair.0].chars().rev().collect::<String>();
|
||||||
|
dbg!(possible_task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -182,18 +190,3 @@ impl Expression {
|
||||||
println!("{}", self.text);
|
println!("{}", self.text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Brace {
|
|
||||||
Open(char),
|
|
||||||
Closed(char),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Brace {
|
|
||||||
pub fn new(c: char) -> Option<Brace> {
|
|
||||||
match c {
|
|
||||||
'{' | '[' | '(' => Some(Brace::Open(c)),
|
|
||||||
'}' | ']' | ')' => Some(Brace::Closed(c)),
|
|
||||||
_ => None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue