## Introduction

Ripple Effect is yet another Nicoli game. Our version is named "ripple".

As invented for pencil and paper working, the puzzle is drawn as a rectangular grid of cells and the polyominoes are defined by use of thicker grid lines. For our game we instead use colour to distinguish the polyominoes and, as just exemplified, use the term polyomino instead of Nikoli's "Rooms".

The game includes 1000 puzzles each of size 6x6 cells. The puzzles are sorted into order based on their difficulty, easiest first. All can be solved using logic: no guessing is required. The algorithms provided in the hint option are the only ones that are needed to solve the puzzles.

The program presents a 6x6 grid of cells divided into coloured polyominoes of size 1 to 5 cells. Most of these cells will be empty except for tiny candidate numbers at their top edges, but a few cells will already have their answers filled in. Please refer to the Ripple Example figure which shows a partially completed puzzle, and to the Ripple Worked Example video which shows a puzzle being solved.

## Rules

**Rule 1:**

When solved each polyomino of size N must contain each of the numbers 1 to N exactly once.

**Rule 2:**

No digit N can occur in an orthogonal cell which is within a distance N cells of a cell for which N is the solution. eg if a cell has answer 3, no other cell to left or right or up and down within 3 cells can have answer 3.

Given a few starting clues, these rules are sufficient to systematically exclude candidates for each cell until the grid is complete.

## Ripple Example

A screenshot from ripple showing a partially completed puzzle. The large digits are the current answers and the small digits are the remaining candidate answers for the individual cells.

## Summary

The program starts with a randomly selected puzzle displayed. The possible candidate answers are written in the unsolved cells. These numbers are buttons: left-clicking will delete a candidate, middle-clicking on its position will rewrite it, right-clicking will set it as the answer and delete any other candidates present. These actions are sufficient to finish a puzzle. But, if stuck, players can request hints.

At the top of the display is a Toolbar. The jigsaw piece button at the left is a menu which has options for configuring the program and saving the current settings. Next to the jigsaw button is an icon consisting of a triangle of dots and which is used for selecting a random puzzle from the program's built-in puzzles; a wand for selecting and executing hints; a thumb for checking and correcting errors, and a sad smiley for showing the solution. To the right of this are 3 numbers. The first is the puzzle number, the next the puzzle difficulty and the next a clock which ticks every 5 seconds. The puzzle number display is also an input box: players can position the cursor over this area and type in a number between 0 and 999 followed by "Enter" to load the corresponding puzzle. When a hint is requested the clock display is used to show a 2-letter abbreviation for the name of the hint found. The program will not report errors until the player clicks on the thumb or requests a hint. Errors are reported by the thumb turning down and the incorrect cells being highlighted. A further click on the thumb will correct the error(s) and undo all changes made since the first error. At any time, hitting "Enter" will restart the current puzzle.

Hints are requested using the wand icon in the Toolbar. The program will find the hint with the lowest difficulty score. Hints are shown by highlighting the candidates that can be deleted in red and the reasons in green. While the hint is active (shown by the wand icon leaning leftwards) clicking on the wand with the middle mouse button will cause a pop-up to appear containing a short explanation of the hint. A further left click on the wand icon will delete the red candidates and unhighlight the green candidates.

The hints available are: Exclusion Rule(ER)), Forbidden Neighbour(FN), Hidden Single(HS), Naked Pairs(NP), Naked Triples(NT), Hidden Pairs(HP), Hidden Triples(HT), Forbidden Pair(FP).

## Ripple Worked Example

A video from ripple showing a puzzle being solved. The player selects puzzle number 689 and immediately applies a right-click to the hint button (wand) to remove all the trivial candidates. She makes good progress removing candidates and setting answers, but later starts to use the hint button. She deliberately makes mistakes to illustrate how errors are displayed and dealt with.

## Playing

Each of the cells which have yet to be given a value contain tiny "candidate" numbers 1-N where N is the number of cells in the polyomino. These are buttons which can be left clicked for removal or middle clicked for setting the number for the cell. A right click will replace a deleted candidate. In this way they can be used as a simple notepad while working towards the solution for each cell. If the player cannot make progress, hints are available.

## Using Hints

Hints are requested using the wand icon in the Toolbar. The program will find the hint with the lowest difficulty score.

When a hint is requested the program highlights, in red, the candidates which can be deleted and, in green, the reason. For example, in the adjacent Hint Example screenshot showing a Naked Pairs hint the 3 and 4 candidates highlighted in red can be deleted because 3 and 4 must be the answers for the cells where they are highlighted in green.

When a hint is requested the wand icon flips to its mirror image. If the player clicks on it while it is in that configuration the program will automatically remove all the candidates highlighted in red, unhighlight those in green, and the wand will revert to its normal orientation. Otherwise the player can delete the red candidates using mouse clicks.

An exhaustive application of the exclusion rule can also be requested by the player right-clicking on the hint button. This operation is made available simply to allow players to avoid dealing with trivial candidate removal, but it can result in a partially completed puzzle being completely finished!

## Hint Example

Here, two cells contain the only remaining 3,4 digits in the polyomino and so must be their solutions and so any other 3,4 digits in the polyomino can be deleted.

Of course, use of the hint option is not obligatory and purists can work out everything for themselves and simply use the candidate buttons as a notepad for each cell.

## Checking for Errors

Clicking on the hand button causes the program to check the puzzle for errors (which can occur due to the player removing incorrect candidates). If errors are detected the hand will flip to the thumbs down position. A further click on the hand will reverse all moves made by the player, back to the last time the puzzle was error free. Note that when a hint is requested the program always checks the puzzle for errors first. If errors are detected no hint search will be performed, the hand will flip to thumbs down and the cells with errors will be highlighted.

## Difficulty Score

The Difficulty Score is the middle of the three numbers at the top of the games window. Because puzzles can be solved in many different ways, and players may find harder or easier ways than those the program used when it calculated the score, the Difficulty Score can only provide a rough indication of the difficulty. Nevertheless it does give a useful indication of the relative difficulty of puzzles.

Algorithm | Score(D) |
---|---|

Exclusion Rule | 0 |

Forbidden Neighbour | 1 |

Hidden Singles | 3 |

Naked Pairs | 6 |

Naked Triples | 7 |

Hidden Pairs | 8 |

Hidden Triples | 10 |

Forbidden Pair | 10 |

The score for a puzzle is calculated as follows. Let D_{i} be the
difficulty score for algorithm i, and N_{i} be the number of cells
algorithm i was successfully applied to in solving the puzzle.
The difficulty score for the puzzle is then the sum
of N_{i} x D_{i} for all i. During this analysis the program always uses the algorithm with the lowest difficulty score which is effective when applied to the current state of the grid.
The algorithms are explained by examples below.

## Algorithms

The algorithms used by Ripple are explained using examples. Candidates highlighted in green are the "reasons" that the candidates highlighted in red can be removed.

## Exclusion Rule

The exclusion rule: only one of each digit can occur in each polyomino, so once an answer is set all other occurrences of that digit in its polyomino can be deleted. Here, the digit 1 has already been set for a polyomino and so any other digit 1s in the polyomino can be deleted.

## Forbidden Neighbour

Forbidden neighbour: no digit N can occur in a cell which is within N cells orthonally of a cell for which that digit is the solution. Here, the digit 3 has already been set for a polyomino and so a digit 3 in the same row (and column) can be deleted.

## Hidden Single

Hidden single: all polyominoes must contain exactly one of each of the digits; if a cell contains the only remaining copy of a digit in a polyomino, that digit must be the answer for that cell, and any other digits in that cell can be deleted. Here, a polyomino has only one remaining digit 3 and so that must be the answer for the cell it is in and any other digits in the cell can be deleted.

## Naked Pairs

Naked pairs: all polyominoes must contain exactly one of each of the digits; if a pair of cells each contain only the same two digits, those digits must be the answers for the two cells, and any other occurrences of those digits in the corresponding polyomino can be deleted. Here, two cells contain only the digits 1 and 2 so they must be their solutions and so any other 1,2 digits in the polyomino can be deleted.

## Hidden Pairs

Hidden pairs: all polyominoes must contain exactly one of each of the digits; if a pair of cells contain the only copies of two digits in a polyomino, those digits must be the answers for the two cells, and any other digits in those cells can be deleted. Here, digits 3,4 occur in only two cells and so must be their solutions and so any other digits in those cells can be deleted.

## Naked Triples

Naked triples: all polyominoss must contain exactly one of each of the digits; if between them, three cells contain only three different digits, those digits must be the answers for the three cells, and any other occurrences of those digits in the corresponding polyomino can be deleted. Here, the digits 2,3,4 must be the solutions for the three cells and so any other digits 2,3,4 in the polyomino can be deleted.

## Hidden Triples

Hidden triples: all polyominoes must contain exactly one of each of the digits; if three cells contain the only copies of three digits in a polyomino, those digits must be the answers for the three cells, and any other digits in those cells can be deleted. Here, digits 1,2,3 must be the solutions for the three cells and so the digits 4,5 can be deleted in those cells.

## Forbidden Pair

This algorithm combines both rules. No digit N can occur in an orthogonal cell which is within distance N of a cell for which N is the solution. All polyominoes must contain exactly one of each of the digits. The combination: If a pair of cells in a polyomino each contain only the same two digits, those digits must be the answers for those two cells. If the two cells are in the same row or same column, even though we don't know which cell has which answer we can exclude digits in that row or that column. Here a yellow coloured polyomino has two cells in the same row, each with candidates 2,3. Both of these two cells are within 3 cells of a cell in the same row in another polyomino. Irrespective of which cell of the yellow polyomino is a 3, it will be too close to the 3 in the other polyomino and so its candidate 3 can be deleted. Note that the purple polyomino below the yellow one also has a 1,3 pair, but they do not share a row or column, so this algorithm cannot use them.