https://github.com/shenmian/soukoban
A library provides the implementation of algorithms and data structures related to Sokoban.
https://github.com/shenmian/soukoban
algorithms data-structures sokoban sokoban-solver
Last synced: 4 months ago
JSON representation
A library provides the implementation of algorithms and data structures related to Sokoban.
- Host: GitHub
- URL: https://github.com/shenmian/soukoban
- Owner: ShenMian
- License: apache-2.0
- Created: 2024-02-09T05:15:41.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-23T20:56:34.000Z (4 months ago)
- Last Synced: 2025-01-26T16:47:30.354Z (4 months ago)
- Topics: algorithms, data-structures, sokoban, sokoban-solver
- Language: Rust
- Homepage: https://shenmian.github.io/soukoban
- Size: 273 KB
- Stars: 2
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# soukoban
[](https://docs.rs/soukoban)
[](https://github.com/ShenMian/soukoban/actions/workflows/test.yml)
[](https://app.codecov.io/gh/ShenMian/soukoban)A library provides the implementation of algorithms and data structures related to [Sokoban].
## Features
- **Level**
- **Zero-allocation lazy parsing**: Parses levels lazily from an in-memory string without memory allocations except for level creation.
- **Lazy stream parsing**: Parses levels lazily from a stream.
- **Map reconstruction**: Reconstructs the map from the solution.
- **Normalization**: Removes elements from the map that are not relevant to the solution.
- **RLE support**: Enables loading of levels encoded in Run-Length Encoding (RLE) format.
- **Solution**
- **Reversal move handling**: Automatically interprets reversal moves as undo actions.
- **Metrics calculation**: Computes metrics such as `box_lines`, `box_changes`, `pushing_sessions`, and `player_lines`.
- **Pathfinding**: Finds the optimal player path to push a box to a position.
- **Deadlock detection**: Detects static deadlocks and freeze deadlocks.## License
Licensed under either of
- [Apache License, Version 2.0](LICENSE-APACHE)
- [MIT license](LICENSE-MIT)at your option.
The level files in the `assets` directory are licensed solely under
their respective licenses, available in the `LICENSE` file in the directory.[sokoban]: https://en.wikipedia.org/wiki/Sokoban