8
1
This is the Cops' thread. Robbers' thread is here.
Background
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, BINGO
, ORANGE
and WEARS
are valid words, but SURGE
and RUSSIA
are not:
SURGE
: There's no adjacent pair on the board havingRG
.RUSSIA
:S
cannot be used twice.
Modified Boggle is a modified version of Boggle, with the following rules:
- The board size is
m
-by-n
, wherem
andn
can 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 BINGO
, ORANGE
and WEARS
, LANGUAGE
becomes a valid string (since G
is used twice, but not twice in a row) but RUSSIA
is still not (due to SS
pair).
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 oo
sequence.
Cop's challenge
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.
Just to make sure, both the output and input bytes can be reused, but can't be used twice in a row, right? – maxb – 2018-10-05T06:58:03.637
@maxb You're right, except that it's code, not input (the code cannot take input at all). – Bubbler – 2018-10-05T07:01:29.903
My mistake, I meant the code. Is there any limit on output length? – maxb – 2018-10-05T07:12:31.830
@maxb No limits, but note that your program should terminate in 5 seconds. – Bubbler – 2018-10-05T07:29:13.457
I've been trying to come up with a non-trivial output for brainfuck using only
[]+.
, but I think it might be impossible. Anyone care to try? – Jo King – 2018-10-05T07:51:16.263@JoKing That means using only one cell, then when exiting
]
the memory is always zero. The only thing complicated is nested loops, and I don't think using it makes sense. The only thing "non-trivial" would be an arithmetic progression modulo 256. – Bubbler – 2018-10-05T08:06:50.813There can be unused characters in your boggle boards, right? – Quintec – 2018-10-05T11:44:09.983
@Quintec
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.
so yes – Shieru Asakoto – 2018-10-05T12:33:56.540