Back to the paper

Telegraphed Mines

Skill-spread 0.72 · A rotating subset of mines flashes a warning each turn.

Mines left
40
Moves
0
Agent playback
Difficulty

Left-click reveals · right-click flags (long-press on mobile). Or hand it to an agent above and watch it play — PAFG is the paper's fixed symbolic solver, PAFG-LLM is the mechanic-adapted one.

The mechanic

A generated mine behavior with one of the highest skill-spreads in the archive. After every move, roughly 20% of the still-hidden mines telegraph themselves — they flash a warning marker for a single turn. Next turn those clear and a different subset lights up, so the hints rotate around the board. A skilled player treats each telegraph as a confirmed mine and clears the guaranteed-safe cells around it; random play can't turn the flickering intel into progress. The warned cells can't be clicked (they're known mines), and everything else is canonical 16×16 Minesweeper.

How to read the board

The rule in code

The generated mechanic this game runs. The browser engine is an algorithm-faithful port of it.

class TelegraphedMines(MineBehavior):
    """Each turn a rotating ~20% of hidden, un-flagged mines auto-flag themselves
    as one-turn warnings. Last turn's warnings clear first, so a different subset
    is telegraphed on every move."""

    DEFAULT_TELEGRAPH_FRACTION = 0.20

    def on_post_action(self, board, game, action):
        # clear the mines we auto-flagged last turn
        for (r, c) in self._prev_auto_flagged:
            cell = board.grid[r][c]
            if not cell.is_revealed and cell.is_mine and cell.is_flagged:
                cell.is_flagged = False

        hidden_mines = [(r, c)
                        for r in range(board.config.rows)
                        for c in range(board.config.cols)
                        if board.grid[r][c].is_mine
                        and not board.grid[r][c].is_revealed
                        and not board.grid[r][c].is_flagged]
        if not hidden_mines:
            self._prev_auto_flagged = set()
            return

        count = max(1, int(len(hidden_mines) * self.telegraph_fraction))
        chosen = self._rng.sample(hidden_mines, min(count, len(hidden_mines)))
        for (r, c) in chosen:
            board.grid[r][c].is_flagged = True
        self._prev_auto_flagged = set(chosen)

More mechanics to play

5×5 Radius + Drifting MinesClues count mines over a 5×5 region while mines wander each turn.Ranked Neighborhood InfoClues show comparative rank, not absolute mine counts.Checkerboard RevealCascades skip every other cell, leaving a hidden lattice.Ripple RevealReveals expand in rings that halt at the first numbers.