Activity Workshop
 

Nonograms - Tutorial

So, after the introduction, you now know what Nonograms are, but you need to know how to go about solving them. How do you even start, when you've just got a blank grid? That's what this tutorial is for.

There are several things you can do to fill in parts of the grid, and none of them are too tricky. Just take one row or column at a time, look at what's in there already, and look at the clue. If you can tell anything definite about the blank squares, fill them in, otherwise go on to the next one. Only fill in a solid or dot if you are sure, not just 'probably', because mistakes are very difficult to undo!

Basic techniques

Here are some basic techniques to get you started. Feel free to figure out more of your own, and figure out easy shortcuts to these ones.

Overlap

You can use this method whenever a block is so big that wherever you put it in the row, some of the squares will always end up solid. If you put it at the far left-hand end (or top), and then put it at the far right-hand end (or bottom), the two positions of the block will overlap.

For example, consider a row of 10 blanks, with the clue 7. like this: [_|_|_|_|_|_|_|_|_|_] 7. What can you tell about this row?

You know there's a block of 7 solids there somewhere, but you don't know where. What you do know, however, is that wherever the block goes, there are squares in the middle which will always be solid. Here are the different positions of the block, to make things clearer: possible positions of 7 within 10

So by looking at the overlap, we know that the four squares in the centre must be solids, and we can colour them in: [_|_|_|*|*|*|*|_|_|_] 7.

Now, that's quite simple for a single block, all you have to do is count squares from each end, and colour in the overlap. But what if you have more than one block? Well, you look at the overlap in exactly the same way, you just have to be careful to count different numbers of squares from each end (so the overlap does not have to be symmetric). Let's look at the same row of 10 blanks, but with the clue 5.2. If it was just 5, or just 2, then we wouldn't be able to tell anything just yet, as the blocks wouldn't overlap, but 5.2 will. Check out the picture, and look at the possible arrangements (there are 6 of them): possible positions of 5.2 in 10 The block of 5 will stretch at least 8 squares from the right (5 plus 2 plus at least one dot), and at least 5 squares from the left, which gives a 3-square overlap. However, the block of 2 has no overlap. Yet. So the squares which can be coloured in as solids are: [_|_|*|*|*|_|_|_|_|_] 5.2.

Note that all the above applies exactly the same to columns as it does for rows. Also note that this method is the only way to start off the puzzle, as all the other methods rely on other squares already having been filled in on that row or column.

Minimum Range

So now you've got some of your grid filled in, using the overlaps, but what next? One very simple thing you can do is check the 'minimum range' of the blocks. In other words, if a block is right up against the edge, how far must it stretch, at least? For example, suppose you have the following: [_|*|_|_|_|_|_|_|_|_] 5. You know that the block must stretch to at least 5 squares away from the edge, so if the second square is a solid, then so must the four next to it : [_|*|*|*|*|_|_|_|_|_] 5.

This can also be used to check how far a block stretches away from a dot, as well as from the edge of the puzzle.

Maximum Range

Continuing with the previous example, we know there's just one block of five solids on this row, and we know where four of them are. So if we examine the maximum range of this block, we know where the solids definitely can't be. Now we can add our first dots! Just count five squares from the leftmost solid : [_|*|*|*|*|_|.|.|.|.] 5.

Note that these dots can only be filled in if that was the last block on the line. If the clue was 5.1, then they would all have to be left blank for now, as any of them could be solid. We'll revisit this later.

Small Gaps

In essence, if the gap's too small for the block, it ain't gonna fit in! For example, if there is a single blank square between two dots, and your smallest block is a 2: [_|_|_|_|.|_|.|_|_|_] 2.2. then that single blank can't be a solid, and must be another dot. Also, both blocks cannot fit into the gap to the left of the dots (since they would require 5 blank squares), or in the gap to the right of the dots (for the same reason), so there must be one block of 2 in each gap. Since we now have on the right, a block of 2 in the space of 3 blank squares, we can use overlap to fill in one solid: [_|_|_|_|.|.|.|_|*|_] 2.2.

Now suppose we had the same starting point as before, with our one-blank square between two dots, but this time with our clue containing a block of 1: [_|_|_|_|.|_|.|_|_|_] 1.2.2. At first sight, since we have a block of 1 in the line, one would think that we couldn't eliminate this single blank. But, the block of 1 cannot fit in this gap, as there would not be room to fit in the other two blocks to the right of it. So we can again put a dot in this position, and examine the remaining possibilities. Clearly, the only way to arrange this is to put the 1 and the first 2 to the left of the dots, and the remaining 2 to the right. So now we can fill in lots of squares, as follows: [*|.|*|*|.|.|.|_|*|_] 1.2.2.

Multiple Blocks

Often, you get solids on your line but you can't tell to which of the blocks they belong.

For example, suppose you start off with a single solid on your row: [_|_|_|_|_|_|*|_|_|_] 2.1. Can you tell anything else? The answer is no, because that solid could belong to either the 2 or the 1. If it's the 2, then the other solid in that block could be on either side, so you can't put dots there, or anywhere to the right because the 1 could be anywhere there. And if it's the 1, then the 2 could be anywhere on the left, so you can't put anything there either. You need more information.

Now suppose that after following more clues, you get an extra solid on your line: [_|_|_|_|_|*|*|_|_|_] 2.1. Now you know that it can't be the 1, and you can go to town putting dots in all the squares to the left. Just one extra square can give you a lot of information. [.|.|.|.|.|*|*|.|_|_] 2.1.

Alternatively, if the clues you follow give you a solid in a different place, this could lead you to quite different conclusions. Suppose the extra solid was found over to the left instead: [_|_|*|_|_|_|*|_|_|_] 2.1. Now, you know that the original solid can't belong to the 2, because that must be over to the left, so you can fill in lots of dots based on Maximum Range. [.|_|*|_|.|.|*|.|.|.] 2.1.

With larger blocks, it is not as easy to determine which block is which, so extra care is needed.

Riiiiight...

So did any of that make sense to you?