Compare commits
2 Commits
d29fa81fbb
...
c056b4f269
| Author | SHA1 | Date | |
|---|---|---|---|
| c056b4f269 | |||
| 3a3c1487bb |
10
01.workspace/oxidice_lib/examples/roll_4d6_keep_3_lowest.rs
Normal file
10
01.workspace/oxidice_lib/examples/roll_4d6_keep_3_lowest.rs
Normal file
@@ -0,0 +1,10 @@
|
||||
use oxidice_lib::dice::*;
|
||||
|
||||
fn main() {
|
||||
let result = Handful::grab(4, 6).roll();
|
||||
print!("{result} -> ");
|
||||
let result = result.keep_lowest(3).unwrap();
|
||||
print!("{result} -> ");
|
||||
let result = result.sum().unwrap();
|
||||
println!("{result}");
|
||||
}
|
||||
@@ -2,6 +2,7 @@ pub mod die_roll;
|
||||
pub mod handful_grab;
|
||||
pub mod handful_roll;
|
||||
pub mod outcome_keep_highest;
|
||||
pub mod outcome_keep_lowest;
|
||||
pub mod outcome_max;
|
||||
pub mod outcome_min;
|
||||
pub mod outcome_sum;
|
||||
|
||||
21
01.workspace/oxidice_lib/src/imp/outcome_keep_lowest.rs
Normal file
21
01.workspace/oxidice_lib/src/imp/outcome_keep_lowest.rs
Normal file
@@ -0,0 +1,21 @@
|
||||
use crate::*;
|
||||
|
||||
impl Outcome {
|
||||
pub fn keep_lowest(self, dice_num: u16) -> Result<Outcome, FailedTo> {
|
||||
if dice_num == 0 {
|
||||
return Err(FailedTo::ProcessInput);
|
||||
}
|
||||
match self {
|
||||
Outcome::Scalar(value) => Ok(Outcome::List(vec![value])),
|
||||
Outcome::List(mut values) => {
|
||||
values.sort();
|
||||
Ok(Outcome::List(
|
||||
values.into_iter().take(dice_num as usize).collect(),
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// #[cfg(test)]
|
||||
// mod unit_tests { use super::*; }
|
||||
Reference in New Issue
Block a user