33 lines
2 KiB
Rust
33 lines
2 KiB
Rust
use std::env;
|
|
use rand::Rng;
|
|
|
|
fn main() {
|
|
let args: Vec<String> = env::args().collect();
|
|
let mut rng = rand::thread_rng();
|
|
|
|
let chars: usize;
|
|
if args.len() > 1 {
|
|
chars = args[1].parse().expect("Not a valid number!");
|
|
} else {
|
|
chars = rng.gen_range(20..40);
|
|
}
|
|
|
|
let weighted_char_list = ["a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "s", "d", "d", "d", "d", "d", "d", "d", "d", "d", "d", "d", "d", "d", "d", "d", "d", "f", "f", "f", "f", "f", "f", "f", "f", "f", "f", "f", "f", "f", "f", "f", "f", "f", "f", "f", "f", "g", "g", "g", "g", "g", "g", "g", "g", "g", "g", "g", "g", "h", "h", "h", "h", "h", "h", "h", "h", "h", "h", "h", "h", "j", "j", "j", "j", "j", "j", "j", "j", "j", "j", "j", "j", "j", "j", "j", "j", "j", "j", "j", "j", "k", "k", "k", "k", "k", "k", "k", "k", "k", "k", "k", "k", "k", "k", "k", "k", "l", "l", "l", "l", "l", "l", "l", "l", "l", "l", "l", "l", "l", "l", "l", ";", ";", ";", ";", ";", ";", ";", ";", ";", ";", ";", ";", "'", "'", "'", "'", "'", "'", "'", "q", "q", "w", "w", "e", "e", "e", "r", "r", "r", "r", "t", "t", "t", "t", "t", "y", "y", "y", "y", "y", "u", "u", "u", "u", "i", "i", "i", "o", "o", "p", "p", "z", "z", "z", "x", "x", "x", "x", "c", "c", "c", "c", "c", "c", "v", "v", "v", "v", "v", "v", "v", "b", "b", "b", "b", "b", "b", "b", "n", "n", "n", "n", "n", "n", "n", "m", "m", "m", "m", "m", "m", ",", ",", ",", ".", ".", "\n"];
|
|
|
|
let mut shifted = rng.gen_range(0..=1) == 1;
|
|
let mut result = String::new();
|
|
|
|
for _ in 1..=chars {
|
|
if rng.gen_range(0..=100) == 0 {
|
|
shifted = !shifted;
|
|
}
|
|
if shifted {
|
|
result.push_str(&weighted_char_list[rng.gen_range(0..weighted_char_list.len())].to_uppercase());
|
|
} else {
|
|
result.push_str(weighted_char_list[rng.gen_range(0..weighted_char_list.len())]);
|
|
}
|
|
}
|
|
|
|
println!("{}, {}", result, weighted_char_list.len());
|
|
}
|