backend by zatzou

This commit is contained in:
endernon 2024-06-06 20:58:53 +01:00
parent e55f8cfd22
commit fa7f748392

View file

@ -1,3 +1,51 @@
use std::collections::BTreeMap;
use std::collections::btree_map::Entry;
fn main() {
println!("Hello, world!");
let dice = [6, 6, 6, 6, 7];
// i need 2 otherwise the for loops below break
let comb = combinations(&dice);
let comb2 = comb.clone();
// below code gets total for all values
let mut total = 0;
for i in comb {
total += i.1;
}
for i in comb2 {
println!("{i:?}");
println!("{total}")
}
}
fn combinations(dice: &[u32]) -> BTreeMap<u32, u32> {
let mut out = BTreeMap::new();
recursive(dice, &mut out, &[]);
out
}
fn recursive(dice: &[u32], out: &mut BTreeMap<u32, u32>, cur: &[u32]) {
let d = dice[0];
for i in 1..=d {
if dice.len() >= 2 {
recursive(&dice[1..], out, &[cur, &[i]].concat());
} else {
let temp = cur.iter().sum::<u32>() + i;
match out.entry(temp) {
Entry::Vacant(e) => {
e.insert(1);
},
Entry::Occupied(e) => {
*e.into_mut() += 1;
}
}
}
}
}