This is the Cops' thread. Robbers' thread is here.
Boggle is a board game where the players have to find English words on a 4-by-4 board of random alphabets. Words can be constructed by selecting sequentially adjacent cells on the board. ("adjacent" means horizontally, vertically or diagonally adjacent.) Also, same cell can't be used more than once in a word.
The following is an example board:
I L A W B N G E I U A O A S R L
On this board,
WEARS are valid words, but
RUSSIA are not:
SURGE: There's no adjacent pair on the board having
Scannot be used twice.
Modified Boggle is a modified version of Boggle, with the following rules:
- The board size is
ncan be any positive integer.
- Each cell can contain any one byte between 0 and 255 inclusive.
- A cell can be used more than once, but not twice in a row.
Using the example board above, in addition to
LANGUAGE becomes a valid string (since
G is used twice, but not twice in a row) but
RUSSIA is still not (due to
Here is another example using a code fragment. The string
from itertools import*\n can be found on the following board, but not
from itertoosl import* or
from itertools import *:
f i ' ' s r t m l e o o p \n * t r
Note that you need two
o's in order to match the
Write a full program in your language of choice that satisfies the following rules:
- The program should print something which is consistent over multiple runs.
- The program should finish in roughly 5 seconds.
- The program may not take any input.
- Both the program and the output should be at least 2 bytes.
- Anything related to hash functions, PRNGs, or cryptography is not allowed.
Then, lay out your program and output into two separate modified-boggle boards. Each board can be a non-square. Note that 1-by-N and 2-by-N boards can pose special challenges to both the cop and the robber. If you want some cells on a board unusable (to add more restriction), you can pick some useless bytes and fill the holes with them.
For example, if you want a 2x2 grid with horizontal/vertical movements only, you can do this instead:
a b c d ----------- X a X c X b X d X
In your submission, specify the language you used, the lengths of the source code and the output, and the two boggle boards. Note that shorter code and/or longer output is allowed for robbers, so you can choose to give some room for the byte counts (i.e. specify longer code and/or shorter output than your actual solution).
If your board contains some unprintable characters, you can specify the board as byte values instead.
After a week a cop is posted, it can be marked safe by the poster if it isn't cracked until then. The cop is still open for robbers until it's actually marked safe. A safe cop can't be cracked, and the poster should reveal the intended solution.
You'll want to obfuscate the boards as much as possible, as the robber's challenge is to crack your submission by finding the code and its output on the boards. If you want to cram a long code into a small board, answers to the original Modified Boggle challenge may give some insights.
Scoring for cops
Since it's hard to say whether a larger or smaller board is harder to crack, each safe cop submission counts as a score of 1. The user with the greatest score wins. It's encouraged to participate with different languages and creative approaches.
Cop example & formatting
# Japt, code 9 bytes, output 20 bytes Code board: 2 rows, 2 columns `l íÏ As byte values: 96 108 237 207 Output board: 3 rows, 3 columns 175 120 643
Modified Boggle verification script
All of the scripts below have an example input with it.
Script for character string(code/output) & boggle. This does not support multi-line string. The input format is
- a single line of string (either code or output), followed by
- the raw boggle board.
Script for character string with byte-value boggle. Use this if the target string is printable but has one or more newlines in it. The input format is
- the number of lines for the string,
- raw string (possibly multi-line), then
- the boggle board as byte values.
Script for byte-value string & boggle. Use this if the target string contains one or more unprintable characters. The input format is
- a single line of string (either code or output) as byte values, followed by
- the boggle board as byte values.