Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/shenmian/soukoban

A library provides the implementation of some algorithms and data structures related to Sokoban.
https://github.com/shenmian/soukoban

sokoban sokoban-solver

Last synced: about 1 month ago
JSON representation

A library provides the implementation of some algorithms and data structures related to Sokoban.

Awesome Lists containing this project

README

        

# soukoban

[![docs.rs](https://img.shields.io/docsrs/soukoban)](https://docs.rs/soukoban)
[![Test status](https://img.shields.io/github/actions/workflow/status/ShenMian/soukoban/test.yml?label=test)](https://github.com/ShenMian/soukoban/actions/workflows/test.yml)
[![Code coverage](https://img.shields.io/codecov/c/github/ShenMian/soukoban)](https://app.codecov.io/gh/ShenMian/soukoban)

A library provides the implementation of some algorithms and data structures related to [Sokoban].

## Features

- **Level**
- **Lazy parsing**: Parses the first n levels or the nth level from an XSB string containing multiple levels.
- **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