48 lines
1.2 KiB
Rust
48 lines
1.2 KiB
Rust
#![allow(dead_code, unused)]
|
|
|
|
use clap::Parser;
|
|
use game::{simulation::Simulation, Game};
|
|
use rand::seq::SliceRandom;
|
|
use solve::grouping::Grouping;
|
|
use std::env::args;
|
|
|
|
mod dictionnary;
|
|
mod game;
|
|
mod solve;
|
|
|
|
#[derive(Debug, clap::Parser)]
|
|
struct Args {
|
|
#[arg(short, long, default_value_t = 100)]
|
|
count: usize,
|
|
#[arg(short, long)]
|
|
target: Option<String>,
|
|
}
|
|
|
|
fn main() {
|
|
let args = Args::parse();
|
|
dbg!(&args);
|
|
let mut dict = dictionnary::gutenberg(7);
|
|
// let dict = dictionnary::francais(7);
|
|
let count = if args.target.is_some() { 1 } else { args.count };
|
|
(0..count).for_each(|_| {
|
|
let mut target = dict.choose(&mut rand::thread_rng()).unwrap().to_string();
|
|
if let Some(specified) = &args.target {
|
|
target = specified.clone();
|
|
dict = dict
|
|
.iter()
|
|
.filter(|w| w.starts_with(target.chars().next().unwrap()))
|
|
.cloned()
|
|
.collect();
|
|
}
|
|
dbg!(&target);
|
|
let solver = Grouping::new(dict.clone());
|
|
let mut game = Simulation::new(target.clone());
|
|
let result = game.play_all(solver, Some(20));
|
|
match result {
|
|
Ok((_, tries)) => println!("succ,{target},{tries}"),
|
|
Err(reason) => println!("fail,{target},{reason}"),
|
|
};
|
|
});
|
|
}
|
|
|
|
// fail,suedois,Reached limit.
|