add more code for 31 (WIP)
This commit is contained in:
+40
-5
@@ -38,23 +38,41 @@ impl Node {
|
||||
if !self.nodes.is_empty() {
|
||||
self.nodes.iter_mut().for_each(|n| n.iter())
|
||||
} else {
|
||||
let mut previous: Option<Values> = None;
|
||||
let mut previous: Option<Vec<Values>> = None;
|
||||
let mut offset = 0;
|
||||
for (i, value) in self.values.iter().enumerate() {
|
||||
let divided = divide_value(*value);
|
||||
|
||||
let use_existing_data = previous.is_none();
|
||||
println!();
|
||||
println!();
|
||||
println!();
|
||||
for (j, combination) in divided.iter().enumerate() {
|
||||
let mut new_vec = self.values.clone();
|
||||
let mut new_vec;
|
||||
let offset;
|
||||
if use_existing_data {
|
||||
println!("existing");
|
||||
new_vec = self.values.clone();
|
||||
offset = 0;
|
||||
} else {
|
||||
println!("previous");
|
||||
new_vec = previous.as_ref().unwrap()[j].clone();
|
||||
offset = new_vec.len() - self.values.len();
|
||||
}
|
||||
println!();
|
||||
println!("{}", i);
|
||||
println!("{}", i + offset);
|
||||
println!("{new_vec:#?}");
|
||||
println!("{combination:#?}");
|
||||
|
||||
new_vec.splice(i..i + 1, combination.clone());
|
||||
new_vec.splice(i + offset..i + offset + 1, combination.clone());
|
||||
println!("{new_vec:#?}");
|
||||
previous = Some(new_vec.clone());
|
||||
if previous.is_none() {
|
||||
previous = Some(vec![new_vec.clone()]);
|
||||
} else {
|
||||
let mut new = previous.unwrap().clone();
|
||||
new.push(new_vec.clone());
|
||||
previous = Some(new);
|
||||
}
|
||||
debug_assert_eq!(new_vec.iter().sum::<u8>(), VALUE);
|
||||
self.nodes.push(Node::new_vec(new_vec));
|
||||
}
|
||||
@@ -124,5 +142,22 @@ mod test {
|
||||
tree.nodes[0][0][2].values,
|
||||
vec![10, 10, 10, 10, 10, 50, 100]
|
||||
);
|
||||
assert_eq!(
|
||||
tree.nodes[0][0][3].values,
|
||||
vec![20, 20, 10, 20, 20, 10, 100]
|
||||
);
|
||||
assert_eq!(
|
||||
tree.nodes[0][0][4].values,
|
||||
vec![20, 10, 10, 10, 20, 10, 10, 10, 100]
|
||||
);
|
||||
assert_eq!(
|
||||
tree.nodes[0][0][5].values,
|
||||
vec![10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 100]
|
||||
);
|
||||
assert_eq!(
|
||||
tree.nodes[0][0][6].values,
|
||||
vec![10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 50, 50]
|
||||
);
|
||||
println!("{}", tree.nodes[0][0].nodes.len())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user