first commit

This commit is contained in:
mycroft committed 2021-02-05 17:40:29 +01:00
commit 84a49065af
4 files changed
+140

No files matched your search

+46
View File
@@ -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);
}