make solver interactive

This commit is contained in:
2026-08-18 21:47:37 +02:00
parent 715bce656d
commit 31092eddc4
+40 -13
View File
@@ -1,21 +1,48 @@
use std::collections::hash_map;
use std::io;
use std::io::Write;
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() {
let wl = WordList::from_file(Path::new("valid-words.csv")).unwrap();
fn pat_from_str(pat_str: &str) -> Vec<CharStatus> {
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());
println!("{}", solver.tabular_format());
println!("{}", solver.best_word_format(5));
let mut solver = Solver::new(valid_words, answers);
solver.apply_guess(Pattern::from_guess("CRANE", "WORKS").unwrap());
println!("{}", solver.tabular_format());
println!("{}", solver.best_word_format(5));
let mut buf = String::new();
solver.apply_guess(Pattern::from_guess("CRANE", "PAPER").unwrap());
println!("{}", solver.tabular_format());
println!("{}", solver.best_word_format(5));
loop {
print!("Your guess: ");
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));
}
}