diff --git a/Cargo.toml b/Cargo.toml index fd6f28a..4b374b5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -64,3 +64,11 @@ test-log = { version = "0.2.16", default-features = false, features = [ "color", "trace", ] } + +[[bench]] +name = "solver_naive" +harness = false + +[[bench]] +name = "solver_stupid" +harness = false diff --git a/README.md b/README.md index 6039a95..3fe839c 100644 --- a/README.md +++ b/README.md @@ -26,5 +26,6 @@ have to guess words by slowly guessing the letters contained in it. Included in this repository are the following wordlists: -* [3Blue1Brown Top English words](./data/wordlists/german_SUBTLEX-DE.json) --- [`./data/wordlists/en_US_3b1b_freq_map.json`](https://github.com/3b1b/videos/tree/master/_2022/wordle/data) -* [~33.000 Common German Words](./data/wordlists/german_SUBTLEX-DE.json) --- [SUBTLEX-DE](https://osf.io/py9ba/files/osfstorage) +* [`./data/wordlists/en_US_3b1b_freq_map.json`](./data/wordlists/en_US_3b1b_freq_map.json) --- [3Blue1Brown Top English words](https://github.com/3b1b/videos/tree/master/_2022/wordle/data) +* [`./data/wordlists/german_SUBTLEX-DE_full.json`](./data/wordlists/german_SUBTLEX-DE_full.json) --- [SUBTLEX-DE ~33.000 Common German Words](https://osf.io/py9ba/files/osfstorage) +* [`./data/wordlists/german_SUBTLEX-DE_small.json`](./data/wordlists/german_SUBTLEX-DE_small.json) --- [SUBTLEX-DE ~33.000 Common German Words (reduced to most common)](https://osf.io/py9ba/files/osfstorage) diff --git a/benches/solver_naive.rs b/benches/solver_naive.rs new file mode 100644 index 0000000..f850b62 --- /dev/null +++ b/benches/solver_naive.rs @@ -0,0 +1,18 @@ +use wordle_analyzer::bench::builtin::BuiltinBenchmark; +use wordle_analyzer::bench::Benchmark; +use wordle_analyzer::game::{self, GameBuilder}; +use wordle_analyzer::solve::{NaiveSolver, Solver}; +use wordle_analyzer::wlist::builtin::BuiltinWList; + +fn main() -> anyhow::Result<()> { + let wl = BuiltinWList::english(5); + let builder: GameBuilder<'_, BuiltinWList> = game::Game::builder(&wl) + .length(5) + .max_steps(6) + .precompute(true); + let solver: NaiveSolver<_> = NaiveSolver::build(&wl)?; + let bench = BuiltinBenchmark::build(&wl, solver, builder, 16)?; + bench.start(2000, &bench.builder())?; + println!("{}", bench.report()); + Ok(()) +} diff --git a/benches/solver_stupid.rs b/benches/solver_stupid.rs new file mode 100644 index 0000000..1fadbd8 --- /dev/null +++ b/benches/solver_stupid.rs @@ -0,0 +1,19 @@ +use wordle_analyzer::bench::builtin::BuiltinBenchmark; +use wordle_analyzer::bench::Benchmark; +use wordle_analyzer::game::{self, GameBuilder}; +use wordle_analyzer::solve::Solver; +use wordle_analyzer::solve::StupidSolver; +use wordle_analyzer::wlist::builtin::BuiltinWList; + +fn main() -> anyhow::Result<()> { + let wl = BuiltinWList::english(5); + let builder: GameBuilder<'_, BuiltinWList> = game::Game::builder(&wl) + .length(5) + .max_steps(6) + .precompute(true); + let solver: StupidSolver<_> = StupidSolver::build(&wl)?; + let bench = BuiltinBenchmark::build(&wl, solver, builder, 16)?; + bench.start(2000, &bench.builder())?; + println!("{}", bench.report()); + Ok(()) +} diff --git a/tests/solver.rs b/tests/solver.rs index 49ea963..18c27b8 100644 --- a/tests/solver.rs +++ b/tests/solver.rs @@ -1,10 +1,8 @@ use test_log::test; // set the log level with an envvar: `RUST_LOG=trace cargo test` -use wordle_analyzer::game::evaluation::Evaluation; use wordle_analyzer::game::Game; use wordle_analyzer::solve::{AnyBuiltinSolver, NaiveSolver, Solver, StupidSolver}; use wordle_analyzer::wlist::builtin::BuiltinWList; -use wordle_analyzer::wlist::word::{Word, WordData}; use wordle_analyzer::wlist::WordList; use rayon::prelude::*;