---
title: "picrossh"
url: https://manvsmidi.com/projects/picrossh/
category: game
status: archived
date: 2026-04-12
tags: [puzzle, tui, terminal, rust]
related: [shellscape, viper, society, cube, pxl, newtype-logic, space-between-numbers]
---

# picrossh

> A nonogram (picross) puzzle game for the terminal, written in Rust with ratatui. Thirteen hand-made puzzles, all checked to be solvable by line logic alone.

Game · Archived · 2026-04-12

- [Source](https://github.com/sadovsky/picrossh)

Nonograms are grids with number clues on each row and column; each clue is the lengths of the filled runs in that line. You fill cells until the picture appears. picrossh is a small, complete version of that in a terminal window.

## How it plays

- Move with arrows or `hjkl`, jump five cells with the shifted versions, and use `g`, `G`, `0` and `$` to reach the edges.
- `Space` fills, `e` erases, `x` crosses out. Holding a key while moving paints a run.
- Puzzles are grouped by size in the menu, and their names stay hidden until you solve them.

| Size | Puzzles |
|---|---|
| 5×5 | Plus, Hourglass, Diamond, Steps, Z Shape |
| 10×10 | House, Heart, Arrow, Letter T, Ladder |
| 15×15 | Frame, Big Cross, H Letter |

## No guessing

Each puzzle is stored as its solution, and the clues are derived from it. A small line solver then checks the whole set. For each row and column it computes the leftmost and rightmost valid placements of the clue runs given what's already known. Any cell that lands in the same run in both placements has to be filled, and any cell no run can reach has to be empty. The solver sweeps rows and columns until nothing changes. A test asserts that every preset resolves completely this way, so none of them needs trial and error.

A second binary, `export_non`, writes the puzzles out in the NON text format so other nonogram tools can read them.

## Running it

```sh
git clone https://github.com/sadovsky/picrossh.git
cd picrossh
cargo run --release
```

## Connected projects

- [shellscape](https://manvsmidi.com/projects/shellscape/index.md): linked
- [viper](https://manvsmidi.com/projects/viper/index.md): linked
- [Society](https://manvsmidi.com/projects/society/index.md): shared tags: tui, terminal
- [Cube Trainer](https://manvsmidi.com/projects/cube/index.md): shared tags: puzzle
- [pxl](https://manvsmidi.com/projects/pxl/index.md): shared tags: terminal
- [NewtypeLogic](https://manvsmidi.com/projects/newtype-logic/index.md): shared tags: puzzle
- [A Space Between Numbers](https://manvsmidi.com/projects/space-between-numbers/index.md): shared tags: puzzle
