Picross 3D[tm] Solver

Picross 3D[tm] Solver

What is Picross 3D[tm]?

Picross 3D[tm] is a logic puzzle game for the Nintendo DS. It presents you a 3D block consisting of many small cubes. On each face, there are written some numbers possibly circled or inside a rectangle) on some of the cubes.

Your goal is to remove all of the unneeded/illegal small cubes that violate the rules, and in the end a more or less recognizable object results. The rules are:

What is this tool?

I've written a solving tool for these kinds of puzzles; you type in the size of the puzzle, and for each or the three faces (top and bottom are identical, same for left/right, front/back), and the solver will show you the solution of the puzzle, plane for plane (starting from the front face).

It has been originally written for Turbo C on a HP 200LX, which features DOS running on a 8MHz 286-CPU. Thus, the coding priority was more like making it fast than anything else :).



Compiling is as easy as throwing the C file at your favourite C compiler. No additional libraries are needed.


The tool accepts a file name as optional command line parameter. If the file exists, it reads the puzzle from the file, the only user interaction will be to view the result.

If the file does not exist, it's created and the puzzle is written into that file.

Entering the puzzle

At first, you must enter the dimensions of the puzzle: xlen, ylen and zlen. Enter the number and hit return.

Then, you must enter front (xlen x ylen), side (zlen x ylen) and top (xlen x zlen) face: Line by line, enter the numbers. If in the raster there is no number given, enter a space instead. If a number is circled or in a square, you must type in a "o" or "p", respectively, after the number.

Note: Under linux, the echo will probably garble the layout; also, you might have to confirm with the return key.

Interpreting the result

The result will be displayed slice by slice, starting by the front face, slicing through until the back face is reached. A "0" means that the cube must be removed, any other number means that the cube needs to stay there.


Working version

This code should work under any reasonably recent system.

Historic version

Here you can find the original version I've written in Turbo Pascal on the HP200LX. It relies on some nonstandard features, there is no reason to use it.


As examples, here are input files for the two dimensional glider and the same in 3D