Metadata-Version: 2.4
Name: rubikoslav
Version: 1.0.3
Summary: Verified 3x3 Rubik's Cube solver with visualisation.
Keywords: rubiks-cube,solver,cpp,pybind11,visualisation
Author: Jaloliddin Ismailov
License-Expression: GPL-3.0
License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Games/Entertainment :: Puzzle Games
Project-URL: Homepage, https://rubikoslav.vercel.app
Project-URL: Documentation, https://unnobatroo.github.io/rubikoslav/
Project-URL: Repository, https://github.com/unnobatroo/rubikoslav
Project-URL: Issues, https://github.com/unnobatroo/rubikoslav/issues
Requires-Python: >=3.10
Requires-Dist: cube-solver==1.1.4
Requires-Dist: rubik-solver-py==0.1.1
Requires-Dist: typing-extensions==4.15.0
Description-Content-Type: text/markdown

# Rubikoslav

[![PyPI](https://img.shields.io/pypi/v/rubikoslav?label=PyPI)](https://pypi.org/project/rubikoslav/)
[![Wiki](https://img.shields.io/badge/docs-wiki-2878EB?logo=materialformkdocs&logoColor=white)](https://unnobatroo.github.io/rubikoslav/)

Rubikoslav solves 3×3 Rubik's Cubes through a Python API, a CLI, and an animated browser visualiser, all backed by a C++20 cube engine. It only returns solutions of 20 moves or fewer in the half-turn metric, and the engine replays every route before accepting it.

## Install the package

Install it from PyPI:

```bash
pip install rubikoslav
```

## Use it in Python

```python
from rubikoslav import Rubikoslav

result = Rubikoslav().solve_scramble("R U F2")

if result.success:
    print(result.moves)
```

## Run the visualiser

```bash
uv run rubikoslav
```

The visualiser sends the current position to Python. C++ checks the state and replays the route before the browser animates anything. `R2` counts as one move, just like `R` and `R'`.

Or use the hosted version at [rubikoslav.vercel.app](https://rubikoslav.vercel.app).
