use clap::Parser;
use rand::rng;
use rand::prelude::IndexedRandom;
#[derive(Parser, Debug)]
#[command(author, version, about = "Generate random sequences", long_about = None)]
struct Args {
#[arg(short, long, default_value = "A,C,G,U")]
alphabet: String,
#[arg(short, long, default_value_t = 50)]
length: usize,
#[arg(short, long, default_value_t = 1)]
num: usize,
#[arg(short, long)]
eval: bool,
}
fn main() {
let args = Args::parse();
let alphabet: Vec<char> = args.alphabet.split(',').map(|s| s.chars().next().unwrap()).collect();
let mut rng = rng();
for _ in 0..args.num {
let seq: String = (0..args.length)
.map(|_| *alphabet.choose(&mut rng).unwrap())
.collect();
println!("{}", seq);
if args.eval {
println!("{}", ".".repeat(args.length));
}
}
}