Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/super7ramp/croissant
A crossword solver backed by various SAT solvers
https://github.com/super7ramp/croissant
crossword rust sat
Last synced: 1 day ago
JSON representation
A crossword solver backed by various SAT solvers
- Host: GitHub
- URL: https://github.com/super7ramp/croissant
- Owner: super7ramp
- Created: 2024-01-18T20:08:29.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-09-09T20:10:17.000Z (2 months ago)
- Last Synced: 2024-09-10T00:50:01.681Z (2 months ago)
- Topics: crossword, rust, sat
- Language: Rust
- Homepage:
- Size: 1.3 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-rust-formalized-reasoning - Croissant - crossword solver backed by various SAT solvers. (Unclassified / Libraries)
README
## Croissant
This is a crossword solver backed by various SAT solvers.
This is *slow*.
This is unusable.
*This is a toy project.*
### Play
First, install [Rust](https://rustup.rs/) – you'll need the nightly toolchain.
Then try this out:
```
cargo run "\
....
..#.
A..."
```It should return:
```
CHIZ
HE#O
ASIA
```Good job! You just created a crossword. Now you can read the help page:
```
🥐 Welcome to Croissant, a crossword solver that smells goodUsage: croissant-cli [OPTIONS]
Arguments:
The grid as a string; Each new line is a new row, '.' is a blank, '#' is a blockOptions:
-w, --wordlist
The path to the word list; File must contain one word per line and nothing else-s, --solver
The solver to use
[default: logicng]Possible values:
- cadical: The slow; Its name sounds good though, doesn't it?
- logicng: The less slow and thus the default; Congrats!
- splr: The slowest and buggiest, but that's why we love it ❤️-c, --count
The desired number of solutions
[default: 1]-h, --help
Print help (see a summary with '-h')-V, --version
Print version
```Enjoy!
### Goals
- ✅ Have fun!
- ✅ Explore SAT solvers available in Rust:
- ✅ [Splr](https://crates.io/crates/Splr)
- ✅ [LogicNG](https://crates.io/crates/Logicng)
- ✅ [CaDiCaL](https://crates.io/crates/Cadical)
- ✅ Implement a CLI using [clap](https://crates.io/crates/clap).
- ✅ Understand Cargo feature configuration: Put each bundled solver behind a feature flag.
- 🚧 Discover WebAssembly: Compile Croissant to wasm and call it from a simple web application.
- 🚧 Scratch dynamic loading in Rust: Discover and use solvers compiled as shared libraries.
- 🚧 Document and publish a crate.### Other Projects
If you're looking for a fast crossword solver in Rust, check out [xwords-rs](https://github.com/szunami/xwords-rs).
If you're looking for another SAT-based crossword solver, check out [Croiseur](https://github.com/super7ramp/croiseur)
and its [SAT solver plugin](https://github.com/super7ramp/croiseur/tree/master/croiseur-solver/croiseur-solver-sat).
It's in Java.