add more code for 31 (WIP)

This commit is contained in:
Dr. Matthias Ratajczak
2022-08-17 18:23:56 +02:00
parent 90f8804085
commit c82db83ef9
+40 -5
View File
@@ -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())
}
}