A terminal visualizer for the 42 push_swap project with real-time TUI, controlled disorder generation, and interactive playback.
Project description
ft_ps_visu
A terminal visualizer for the 42 push_swap project. It generates controlled random sequences with specific disorder levels, runs your push_swap executable, and renders a real-time TUI (Terminal User Interface) with interactive playback controls.
Features
- Real-time TUI visualization — watch your
push_swapalgorithm sort stacks live in the terminal. - Controlled disorder generation — creates sequences with precise inversion percentages.
- Four test modes — adaptive, simple, medium, and complex.
- Interactive controls — play/pause, forward/reverse, step-by-step, speed adjustment, and more.
- True-color bars — gradient-colored bars representing values for easy visual tracking.
- Responsive layout — adapts to terminal resize events.
Requirements
- Python 3.7+
- A compiled
push_swapexecutable that accepts a--<mode>flag and the numbers to sort - A terminal that supports:
- ANSI escape codes
- True-color (24-bit RGB) for the best experience
- Alternate screen buffer (
\033[?1049h/\033[?1049l)
Note: On Windows, use Windows Terminal, WSL, or any modern terminal emulator. The classic
cmd.execonsole may not render Unicode block characters or true-color correctly.
Installation
Tip: If you run into installation errors, try updating
pipfirst:pip install --upgrade pip # or pip3 install --upgrade pip
Option 1: Install from PyPI (recommended)
Using pip:
pip install ft_ps_visu
Using pip3:
pip3 install ft_ps_visu
User-local install (no sudo required — pip):
pip install --user ft_ps_visu
Using python3 -m pip:
python3 -m pip install ft_ps_visu
Note: When using
--user, theft_ps_visubinary is installed to a user-localbin/directory. Make sure this directory is on yourPATH, or use thepython3 -mexecution methods shown below.
Option 2: Install from source
Clone this repository:
git clone https://github.com/italoalmeida0/ft_ps_visu.git
cd ft_ps_visu
Editable / development mode (pip):
pip install -e .
Normal install (pip):
pip install .
Option 3: Run with pipx (isolated, no install required)
If you have pipx installed, you can run the visualizer directly without permanently installing it:
pipx run ft_ps_visu ./push_swap
Or install it into an isolated environment:
pipx install ft_ps_visu
Then run normally:
ft_ps_visu ./push_swap
Make sure your push_swap binary is compiled and executable:
make
chmod +x push_swap
Usage
Basic usage
ft_ps_visu ./push_swap
With custom number of elements:
ft_ps_visu ./push_swap 100
With custom disorder percentage (0–55):
ft_ps_visu ./push_swap 500 30
If ft_ps_visu is not found on your PATH, run via the module:
python3 -m ft_ps_visu ./push_swap
Or using the .cli submodule directly:
python3 -m ft_ps_visu.cli ./push_swap
From the cloned source directory (no install required):
python3 ft_ps_visu/cli.py ./push_swap
Controls
| Key | Action |
|---|---|
P |
Play / Pause |
O |
Toggle Forward / Reverse direction |
N |
Next step (forward one operation) |
B |
Back step (reverse one operation) |
X |
Increase speed |
Z |
Decrease speed |
G |
Re-generate data with current settings |
M |
Cycle through modes (adaptive → simple → medium → complex) |
A |
Decrease number of elements |
S |
Increase number of elements |
D |
Decrease disorder percentage |
F |
Increase disorder percentage |
Q |
Quit |
Modes / Flags
Your push_swap must support the following flags (passed as --<mode> before the numbers):
| Mode | Disorder range | Description |
|---|---|---|
simple |
15.0% – 19.9% | Nearly sorted sequences |
medium |
20.0% – 49.9% | Moderately shuffled sequences |
complex |
50.0% – 55.0% | Heavily shuffled sequences |
adaptive |
15.0% – 55.0% | Random disorder across the full spectrum |
Note: If your
push_swapdoes not implement these flags, the visualizer will still work if your program ignores unknown flags and simply sorts the provided numbers.
How it works
- Generate a random sequence with the desired size and disorder level.
- Run your
push_swapexecutable with the sequence. - Capture the operations printed to
stdout. - Render a TUI showing both stacks as colored bars.
- Animate the operations at the chosen speed, allowing forward and reverse playback.
License
This project is licensed under the MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ft_ps_visu-1.0.0.tar.gz.
File metadata
- Download URL: ft_ps_visu-1.0.0.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71ac1e87cce8ca839a70b4194d8c2b6cf09b30ddc7b8dc09f19be1ddba282876
|
|
| MD5 |
a628d98446cf47de98b4b1d922cce1ce
|
|
| BLAKE2b-256 |
8a0c414ab64fdfabf5bbad912128812084ffc9118ca2bacab33b39e30c18c417
|
File details
Details for the file ft_ps_visu-1.0.0-py3-none-any.whl.
File metadata
- Download URL: ft_ps_visu-1.0.0-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
005cc2d12c24877d26d1beefad794bd68c3b6e10399991768ee793ce7e3e2768
|
|
| MD5 |
e35cd267fd61a7bdcb01ac69ece746ea
|
|
| BLAKE2b-256 |
8e1d5f38e6b789dbd3cd43e59e133acee2fa547a575b28dd658e052098f98753
|