The puzzle file format consists of a grid size (as a single integer - the grid is assumed to be square) then a square list of piece characters, with . indicating an empty square. For example, puzzle 1 (which can be found as puzzles/01) is represented as 6 jj...m p..n.m paan.m p..n.. e...ll e.ooo. which corresponds to what I might represent in ASCII (well, 8859-1) graphics thusly (* marks the goal piece which must exit via the gap): +---------------------------+ | +-------+ +---+ | | | | · · · | | | | +---+---+ +---+ | | | | | | · · | | · | | | | | +-------+ | | | | | | * * | | · | | | | +-------+ | +---+ | | | · · | | · · | | +---+ +---+-------+ | | | | · · · | | | | | | +-------+---+---+ | | | | · | | · | | +---+ +-----------+ | +---------------------------+ All pieces must be either 1x2 or 1x3 rectangles. The assignment of letters to peices is arbitrary, except that `a' must be the character for the goal piece, which must be a two- or three-cell horizontal piece. The exit gate is considered to be at the right edge of the diagram in line with this piece. (Different pieces must, of course, use different letters.)