THE STRADDLING CHECKERBOARD
The Straddling Checkerboard converts text to digits using variable-length encoding — high-frequency letters get one digit, all others get two.
2.1 Structure
The checkerboard is a 3-row, 10-column grid.
- Row 1 (top row): contains 6 high-frequency characters, with 4 cells reserved for escape digits and special functions.
- Row 2: 10 characters, reached by the 2-digit prefix starting with escape digit 7.
- Row 3: 10 characters, reached by the 2-digit prefix starting with escape digit 8.
The row 1 reserved positions are called escape digits. They signal that the next digit forms a 2-digit code addressing rows 2 or 3.
2.2 Why "Straddling"
The encoding straddles single and double digit codes. Letters in the top row use 1 digit. Letters in the lower rows use 2 digits (escape + column). Because common letters occupy the top row, the average code length is less than 2.
This variable-length encoding means the digit string cannot be parsed without the checkerboard key. An analyst seeing 7 2 0 8 does not know if that is four single-digit chars, two doubles, or one double and two singles. The ambiguity is intentional and protective.
(Note: it is not ambiguous to the decoder with the key, because the decoding algorithm is deterministic.)
2.3 Standard Construction
You need to choose:
- A keyword or key phrase
- Positions for the escape cells in row 1
Step 1: Extract unique characters from keyword, in order.
Step 2: Continue with remaining alphabet characters not in keyword, in standard order (skip those already used).
Step 3: Fill row 1 with the first 6 high-frequency characters. The remaining positions serve as escape prefixes for rows 2 and 3.
Step 4: Fill row 2 (escape=7) and row 3 (escape=8) with remaining characters.
Place the highest-frequency letters in the top row. In English, E T A O N I cover roughly 51% of all text. Each of these encodes to a single digit, saving key material on every message.
2.4 The Reference Checkerboard
We use this checkerboard throughout the course. Study it until you can construct it from memory.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|---|
| ROW 1 | E | T | A | O | N | I | FIG | / | / | FIG |
| 7_ | S | R | H | L | D | C | U | M | W | F |
| 8_ | G | Y | P | B | V | K | J | X | Q | Z |
Single-digit codes (Row 1): E=0, T=1, A=2, O=3, N=4, I=5
Two-digit codes (Row 2, prefix 7): S=70, R=71, H=72, L=73, D=74, C=75, U=76, M=77, W=78, F=79
Two-digit codes (Row 3, prefix 8): G=80, Y=81, P=82, B=83, V=84, K=85, J=86, X=87, Q=88, Z=89
2.5 Reading the Checkerboard
To encode a character:
- If the character is in Row 1: code = column number (1 digit)
- If the character is in Row 2: code = 7 (escape) followed by column number (2 digits total)
- If the character is in Row 3: code = 8 (escape) followed by column number (2 digits total)
Examples:
E → 0 (row 1, col 0) T → 1 (row 1, col 1) A → 2 (row 1, col 2) O → 3 (row 1, col 3) N → 4 (row 1, col 4) I → 5 (row 1, col 5) S → 70 (row 2, col 0, escape=7) R → 71 (row 2, col 1) H → 72 (row 2, col 2) D → 74 (row 2, col 4) M → 77 (row 2, col 7) G → 80 (row 2, col 0, escape=8) Y → 81 (row 3, col 1) P → 82 (row 3, col 2) B → 83 (row 3, col 3) Z → 89 (row 3, col 9)
2.6 Encoding a Message
Plaintext: MEET AT NOON
Step 1: Remove spaces (or encode using a convention). Here we drop spaces:
M E E T A T N O O N
Step 2: Encode each character:
M → 77 E → 0 E → 0 T → 1 A → 2 T → 1 N → 4 O → 3 O → 3 N → 4
Step 3: Concatenate:
77 | 0 | 0 | 1 | 2 | 1 | 4 | 3 | 3 | 4 Digit string: 7 7 0 0 1 2 1 4 3 3 4 (11 digits)
Step 4: Group into 5-digit groups for transmission:
77001 21433 4
This intermediate string is not the ciphertext. It is the input to the OTP encryption step.
Decoding Example
Decode: 7 7 0 0 1 2 1 4 3 3 4
Read 7: escape digit. Read next: 7. Row 2, col 7 = M. Output M. Read 0: not escape. Row 1, col 0 = E. Output E. Read 0: not escape. Row 1, col 0 = E. Output E. Read 1: not escape. Row 1, col 1 = T. Output T. Read 2: not escape. Row 1, col 2 = A. Output A. Read 1: not escape. Row 1, col 1 = T. Output T. Read 4: not escape. Row 1, col 4 = N. Output N. Read 3: not escape. Row 1, col 3 = O. Output O. Read 3: not escape. Row 1, col 3 = O. Output O. Read 4: not escape. Row 1, col 4 = N. Output N.
Result: MEETATNOON — correct.
Process strictly left to right. Never look ahead. Any decoding error propagates forever if you jump around.
2.7 Exercises — Module 2
Use the reference checkerboard for all exercises. Work on paper.
2.1 Encode these strings to digit sequences:
a) NORTH b) SENDHELP c) HIDE d) ATDAWN e) THECAT
a) NORTH: N=4, O=3, R=71, T=1, H=72 → 4 3 71 1 72 → 437172
b) SENDHELP: S=70, E=0, N=4, D=74, H=72, E=0, L=73, P=82 → 70 0 4 74 72 0 73 82 → 700474720 7382
c) HIDE: H=72, I=5, D=74, E=0 → 72 5 74 0 → 725740
d) ATDAWN: A=2, T=1, D=74, A=2, W=78, N=4 → 2 1 74 2 78 4 → 2174 2784
e) THECAT: T=1, H=72, E=0, C=75, A=2, T=1 → 1 72 0 75 2 1 → 172075 21
2.2 Decode these digit strings:
a) 1720 b) 77001 c) 71764340 d) 027170334 e) 72 0 73 82 70 1 3 82
a) 1720: 1=T, 7→R2: 2=H, 0=E → THE
b) 77001: 7→R2: 7=M, 0=E, 0=E, 1=T → MEET
c) 71764340: 7→R2: 1=R, 7→R2: 6=U, 4=N, 3=O, 4=N, 0=E → RUNONE
d) 027170334: 0=E, 2=A, 7→R2: 1=R, 7→R2: 0=S, 3=O, 3=O, 4=N → EARSOON
e) 72 0 73 82 70 1 3 82: 7→R2: 2=H, 0=E, 7→R2: 3=L, 8→R3: 2=P, 7→R2: 0=S, 1=T, 3=O, 8→R3: 2=P → HELPSTOP
2.3 How many digits does each character require?
E, R, Q, T, B, I, Z, N, H, G
E=1, R=2, Q=2, T=1, B=2, I=1, Z=2, N=1, H=2, G=2
Row 1 letters (E, T, I, N) = 1 digit. All others = 2 digits.
2.4 Calculate the average digits-per-character for the reference checkerboard, assuming standard English letter frequency (E=12.7%, T=9.1%, A=8.2%, O=7.5%, N=6.7%, I=7.0%). Compare to the naive 2.0 digits/char baseline.
Row 1 frequency total: E(12.7) + T(9.1) + A(8.2) + O(7.5) + N(6.7) + I(7.0) = 51.2%
Average = (0.512 × 1) + (0.488 × 2) = 0.512 + 0.976 = 1.488 digits/char
Savings vs naive: (2.0 − 1.488) / 2.0 = ~25.6%
A random letter appears. Type its checkerboard code. Target: under 2 seconds.
A digit code appears. Type the letter it represents. Target: under 3 seconds.