diff --git a/01.workspace/oxidice_lib/src/imp/mod.rs b/01.workspace/oxidice_lib/src/imp/mod.rs index b0c6621..23a3bc9 100644 --- a/01.workspace/oxidice_lib/src/imp/mod.rs +++ b/01.workspace/oxidice_lib/src/imp/mod.rs @@ -5,3 +5,4 @@ pub mod outcome_keep_highest; pub mod outcome_max; pub mod outcome_min; pub mod outcome_sum; +pub mod outcome_keep_lowest; diff --git a/01.workspace/oxidice_lib/src/imp/outcome_keep_lowest.rs b/01.workspace/oxidice_lib/src/imp/outcome_keep_lowest.rs new file mode 100644 index 0000000..edfc38d --- /dev/null +++ b/01.workspace/oxidice_lib/src/imp/outcome_keep_lowest.rs @@ -0,0 +1,21 @@ +use crate::*; + +impl Outcome { + pub fn keep_lowest(self, dice_num: u16) -> Result { + 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::*; }