Back to the paper

Ranked Neighborhood Info

Skill-spread 0.56 · Clues show comparative rank, not absolute mine counts.

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 code-level mutation of the clue encoding. Instead of printing the number of adjacent mines, each revealed cell shows the ordinal rank of its mine count relative to its already-revealed neighbors — 1 means this cell borders the fewest mines among the cells around it. This shifts play from absolute deduction to comparative reasoning: you can tell which direction is relatively safer, but never the exact count. Random play cannot exploit the relational ordering, which is what makes the mechanic separate skilled from unskilled solvers.

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 RankedNeighborInfo(InfoStrategy):
    """Each revealed cell shows the RANK of its adjacent-mine count relative to
    its revealed neighbors: 1 = fewest mines nearby. Falls back to the raw count
    when the cell has no revealed neighbors yet."""

    def encode(self, board, r, c):
        my_count = board.grid[r][c].adjacent_mines
        revealed_neighbors = [
            board.grid[nr][nc].adjacent_mines
            for nr, nc in board.neighbors(r, c)
            if board.grid[nr][nc].is_revealed and not board.grid[nr][nc].is_mine
        ]
        if not revealed_neighbors:
            return str(my_count) if my_count > 0 else ""
        ordered = sorted(set(revealed_neighbors + [my_count]))
        rank = ordered.index(my_count) + 1  # 1-based
        return str(rank)

More mechanics to play

5×5 Radius + Drifting MinesClues count mines over a 5×5 region while mines wander each turn.Telegraphed MinesA rotating subset of mines flashes a warning each turn.Checkerboard RevealCascades skip every other cell, leaving a hidden lattice.Ripple RevealReveals expand in rings that halt at the first numbers.