make solver interactive
This commit is contained in:
+40
-13
@@ -1,21 +1,48 @@
|
|||||||
|
use std::collections::hash_map;
|
||||||
|
use std::io;
|
||||||
|
use std::io::Write;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
use wordle_solver::{pattern::Pattern, solver::Solver, word_list::WordList};
|
use wordle_solver::{
|
||||||
|
pattern::{CharStatus, Pattern},
|
||||||
|
solver::Solver,
|
||||||
|
word_list::WordList,
|
||||||
|
};
|
||||||
|
|
||||||
pub fn main() {
|
fn pat_from_str(pat_str: &str) -> Vec<CharStatus> {
|
||||||
let wl = WordList::from_file(Path::new("valid-words.csv")).unwrap();
|
pat_str
|
||||||
|
.chars()
|
||||||
|
.map(|c| match c {
|
||||||
|
'g' => CharStatus::GREEN,
|
||||||
|
'y' => CharStatus::YELLOW,
|
||||||
|
_ => CharStatus::GREY,
|
||||||
|
})
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
|
||||||
let mut solver = Solver::from_single_word_list(wl);
|
pub fn main() -> io::Result<()> {
|
||||||
|
let valid_words = WordList::from_file(Path::new("valid-words.txt")).unwrap();
|
||||||
|
let answers = WordList::from_file(Path::new("answers.txt")).unwrap();
|
||||||
|
|
||||||
solver.apply_guess(Pattern::from_guess("CRANE", "CASTS").unwrap());
|
let mut solver = Solver::new(valid_words, answers);
|
||||||
println!("{}", solver.tabular_format());
|
|
||||||
println!("{}", solver.best_word_format(5));
|
|
||||||
|
|
||||||
solver.apply_guess(Pattern::from_guess("CRANE", "WORKS").unwrap());
|
let mut buf = String::new();
|
||||||
println!("{}", solver.tabular_format());
|
|
||||||
println!("{}", solver.best_word_format(5));
|
|
||||||
|
|
||||||
solver.apply_guess(Pattern::from_guess("CRANE", "PAPER").unwrap());
|
loop {
|
||||||
println!("{}", solver.tabular_format());
|
print!("Your guess: ");
|
||||||
println!("{}", solver.best_word_format(5));
|
io::stdout().flush()?;
|
||||||
|
buf.clear();
|
||||||
|
io::stdin().read_line(&mut buf)?;
|
||||||
|
let guess = buf.trim_ascii().to_ascii_uppercase();
|
||||||
|
print!("Result [-,y,g]: ");
|
||||||
|
io::stdout().flush()?;
|
||||||
|
buf.clear();
|
||||||
|
io::stdin().read_line(&mut buf)?;
|
||||||
|
let pat_str = buf.trim_ascii().to_ascii_lowercase();
|
||||||
|
|
||||||
|
solver.apply_guess(Pattern::try_new(&guess, pat_from_str(&pat_str)).unwrap());
|
||||||
|
solver.evaluate_all_words();
|
||||||
|
println!("\n{}\n", solver.tabular_format());
|
||||||
|
println!("{}", solver.best_word_format(10));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user