Failsafe Solution
How It Works
This is the meta, where teams will use the key and briefcase they received earlier in the game. It also incorporates the "terrible choice" posed by the plot – do they turn on the device or destroy it? There's one codebook for each of these options, so if teams decide what they want to do at the beginning, they can safely ignore the other.
The first few steps of the puzzle are experimenting to understand the rules. The core of the device is the "command" station, which consists of:
- A numeric display showing a four-digit "challenge" code. After 25 seconds, it counts down another 15 seconds.
- A key switch, which the key they found fit in
- A receipt printer, which prints various status messages.
The challenges are a lookup for the codebook, which maps all numbers from 0000-9999 to a nine-letter code. The other parts of the device set the nine letters of the code, so the goal is to input the proper code code and turn the key. If they turn the key incorrectly, the printer will print whatever the device is set to at the moment they turn it (With * for any invalid letters), and then lock out until the challenge changes. The challenge changes every ~40 seconds (as indicated by the timer), so they have to do everything in that time in order to win.
Once they've figured that much out, the next step is to understand each of the individual components, both how they make letters and which position(s) in the code they control. Once they do so, they need to formulate a strategy and carry it out. The general strategy was to have one person look up the code, each team member set up one or two station and give a thumbs up, and the team member at the control station turn the key once everyone's ready.
This is the order that the stations control the code. On the device, they're in a random order:
- Up/down switches and numeric readout: This is the Periodic table. It controls two letters, the atomic symbol for the element in the respective number. (Single-letter numbers are output as one valid letter and one invalid)
- Two dials: These are Semaphore, which works as expected.
- Six switches and matrix of lights: This is Pigpen- the bottom-right switch changes state from orthogonal to diagonal lines, the top-right switch controls the dot, and the four switches on the left control the four outer lines.
- Three buttons and six lights: This is ternary, the button increments the column of lights above it: 0, 1, 2, then 0 lights lit.
- Row/column of buttons and unusual-looking matrix drawing. The matrix is a QWERTY keyboard, and the two buttons indicate the row/column of the vertex to choose.
- Pushbutton + light: This is Morse; you punch in the Morse, and it echoes the last thing entered back at you. The flashes of the light use the timing the button expects for what a dot and dash are.
- Five two-position switches: This is binary, as would be expected.
- Six in/out pushbuttons: This is Braille. The one thing that's a little tricky is that the "out" position of the buttons represents a dot; if you think about how Braille works when it's printed, the dots are raised.
Periodic Table and Qwerty tended to be harder for teams to figure out. Once teams realize they can query every 40 seconds, and lock down the other positions, they can brute-force the missing ones. Putting the first few positions will reveal Q, W, E... or H, He, Li, ...
Depending on the time teams arrived, completing the process the first time would either go straight to the win response or activat the second stage.
Advanced Security mode
After entering the code for the first phase, the printer will print out a message telling them to confirm their command. However, when they start the clock again, the challenge display will start changing "randomly" – it'll change every 2 seconds until 30 different numbers have displayed, then lock for 5 seconds before resetting with a new code. Now, they have to turn the key when the code entered matches whatever challenge is currently displaying.
The sequence is deterministic – each digit changes to the next digit in one of three cycles: 1→6→1, 2→8→0→2, and 5→3→4→7→9→5. The usual way to figure this out is to look at any single digit, especially a 1 or 6. After figuring this out, the next step is to predict the sequence sufficiently far ahead that they can set up accordingly. The trick to solving is that the sequence is periodic – since the three smaller cycles repeat every 2, 3, and 5 iterations, the entire sequence will repeat every 30. Since only 30 numbers display, you can predict the last number by taking the first number revealed and stepping back one. So the process becomes getting the new number, transforming it, doing the lookup+code entry from before, then waiting to turn the key at the correct time.
Once they win, there will be some flashing lights and the printer will print out a confirmation code based on their decision: ENERGIZE if they activate the device, or ZERO ZERO ZERO DESTRUCT ZERO if they destroy it. (The latter is the last self-destruct code from Star Trek III)
Solution
ENERGIZE or ZERO ZERO ZERO DESTRUCT ZERO
Design Notes
This is my second puzzle with a movie reference in the title. Failsafe references the feel of the puzzle more than anything else, between the panels of blinky lights and inadvertently nuking things.
The second phase of the puzzle was added after the second beta, when teams were concerned about the ending being anticlimactic. The physical device definitely added to the excitement, but the second stage provided a nice "oh crap" moment for the teams that got there.
Construction Notes
The initial playtests for this puzzle and beta test were run entirely in software. Spiderdog netbooks from the 2010 Game were set up around a table. Each ran Silverlight implementations of the various panels and were coordinated with a central web service. For the RC run, we added physical implementations of the braille and semaphore stations interfaced to a laptop using some spare NI-DAQmx data acquisition devices that provided digital and analog I/O to a .NET application talking to the same web service.
The final build was based on a Netduino microcontroller running .NET Micro Framework. The Netduino has way too few digital I/O pins to drive everything (about 110). Instead, the LEDs and switches for most of the panels were connected to PCA9555 I/O expander chips. Each chip is addressable over an I2C bus and provides 16 configurable digital I/O pins. In all, there are eight of these chips, half of which go to driving the pigpen and qwerty stations.
The output of the device was printed through Verifone P900 dot-matrix receipt printers. These printers are normally used in retail settings such as with credit card terminals. Fortunately they speak RS-232 and have a few extra special commands for dual color printing, graphics, etc.
GC Notes
When teams arrived, we told them to bring "anything they'd received over the course of the game and not found a use for yet." This was vague enough to include the obtainium brick and Xbox casing by design – if teams gave them to the proctor, he or she would make a big deal about putting them in the machine to "charge" the device.
Technical difficulties were relatively minor during the event. All four instances of the puzzle worked, but two copies had known issues with the I/O. One had the a segment of the display broken. The bad segment was "rewired" to the digit's dot point and was explained by competing notes from the FEI Department of Photonic Efficiency and the FEI Department of Photonic Optimization. Another had nonfunctional up switches for the periodic table, so the number could only be decreased. We wired in an extra button to increment the tens digit so that you could always get to the maximum value of 99 then decrease one and tens to the desired number.
One team had skipped Zoe, where they would have received the key, so we put the key in the switch for them. Another team didn't, but forgot they had received the key earlier. This led to them searching the room, which was fortunately not the one we had actually hidden the staff's storeroom key in.