This representation allows defining a grid of cells that are marked
either as filled or empty. This usually represents the solution that the
player has to achieve.
The transpose function is a bit overkill but does the work for now.
Future optimization might be necessary.
Most nonogram puzzles are small, maybe they can live on the stack
instead of dynamically allocating [`Vec`]? Maybe use `smallvec`?