first commit
This commit is contained in:
commit
84a49065af
4 files changed
+140
No files matched your search
+46
@@ -0,0 +1,46 @@
|
||||
use std::fmt;
|
||||
use rand::Rng;
|
||||
use std::iter::FromIterator;
|
||||
|
||||
struct Numbers {
|
||||
numbers: Vec<u8>
|
||||
}
|
||||
|
||||
fn get_numbers(numbers: &Vec<u8>, size: usize) -> Numbers {
|
||||
let mut picked : Vec<u8> = vec![];
|
||||
let mut numbers = numbers.clone();
|
||||
|
||||
let mut rng = rand::thread_rng();
|
||||
|
||||
for _idx in 0..size {
|
||||
let n : usize = rng.gen::<usize>() % numbers.len();
|
||||
picked.push(numbers.remove(n.into()));
|
||||
}
|
||||
picked.sort();
|
||||
|
||||
Numbers { numbers: picked }
|
||||
}
|
||||
|
||||
impl fmt::Display for Numbers {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let s = self.numbers.iter().fold(String::from(""), |mut s, x| {
|
||||
if s != "" {
|
||||
s.push_str(", ");
|
||||
}
|
||||
s.push_str(&format!("{}", x).to_string());
|
||||
s
|
||||
});
|
||||
|
||||
write!(f, "{}", s)
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let numbers : Vec<u8> = Vec::from_iter(1..=50_u8);
|
||||
let stars : Vec<u8> = Vec::from_iter(1..=12_u8);
|
||||
|
||||
let picked_numbers = get_numbers(&numbers, 5);
|
||||
let picked_stars = get_numbers(&stars, 2);
|
||||
|
||||
println!("Numbers: {} / Stars: {}", picked_numbers, picked_stars);
|
||||
}
|
||||
Reference in new issue
Block a user