### Solution to September's Puzzle: The Missing Buck

In last month's puzzle, three people arrived at a hotel and asked to share a room. The charge was \$30, so each person chipped in \$10. Later on, the hotel receptionist discovered that he overcharged the guests by \$5. Realizing that he couldn't evenly split \$5 between the three guests, he pocketed \$2 and gave each guest \$1 back. However, the receptionist found it hard to sleep that night because the numbers didn't seem to add up. Each guest eventually paid \$9, and 9 x 3 + \$2 = \$29. Where's the missing buck?

The guests ultimately were supposed to pay \$25. After getting the change back, each of them paid \$9, for a total of \$27. The mistake that the receptionist made was that he added \$2 to \$27, assuming he'd get \$30 instead of subtracting \$2 from \$27 and expecting \$25. To get the original incorrect room charge of \$30, you should sum the correct room charge (\$25) plus the change that the guests got (\$3) plus the amount that the receptionist pocketed (\$2).

Similar errors frequently occur in T-SQL code when you apply the incorrect operator (a plus operator instead of a minus operator and vise versa). For example, suppose table T1 has an integer column c1 and you need to return all rows before a gap. In other words, you need to return all c1 values for which a value greater by 1 doesn't exist. A common mistake is to write

`SELECT c1 FROM T1 AS A                                WHERE NOT EXISTS(SELECT *                                FROM T1 AS B WHERE A.c1 =                                 B.c1 + 1)`

Instead of getting all the values before a gap, you'll get all the values after a gap. The correct query uses a minus operator, not a plus operator:

`SELECT c1 FROM T1 AS A                                WHERE NOT EXISTS(SELECT *                                FROM T1 AS B WHERE A.c1 =                                 B.c1 — 1)`

The correct way to phrase a relationship where a c1 value in B is greater than a c1 value in A by 1 is

A.c1 = B.c1 — 1

If B1.c1 – 1 is equal to A.c1, then B.c1 is greater than A.c1 by 1 and not the other way around.

### October's Puzzle: Alternating Lamp States

One hundred lamps are arranged in a row (call them lamp 1, lamp 2, lamp 3, and so on). All lamps are originally turned off. Each lamp has a switch that alternates its state (on/off). One hundred people (call them person 1, person 2, person 3, and so on) get the following mission: Go to each nth lamp and alternate its state, where n is the person's number. So person 1 alternates the state of lamps 1, 2, 3, and so on. Person 2 alternates the states of lamps 2, 4, 6, and so on. What's the state of the lamps after all 100 people finished their missions?