โ† Back to PDF & Documents
PDF & Documents by @christianhaberl

boggle

Solve Boggle boards โ€” find all valid words (German + English) on a 4x4

0
Source Code

Boggle Solver

Fast trie-based DFS solver with dictionary-only matching. No AI/LLM guessing โ€” words are validated exclusively against bundled dictionaries (359K English + 1.35M German).

Workflow (from photo)

  1. Read the 4x4 grid from the photo (left-to-right, top-to-bottom)
  2. Show the grid to the user and ask for confirmation before solving
  3. Only after user confirms โ†’ run the solver
  4. Always run English and German SEPARATELY โ€” present as two labeled sections (๐Ÿ‡ฌ๐Ÿ‡ง / ๐Ÿ‡ฉ๐Ÿ‡ช)

Solve a board

# English
python3 skills/boggle/scripts/solve.py ELMU ZBTS ETVO CKNA --lang en

# German
python3 skills/boggle/scripts/solve.py ELMU ZBTS ETVO CKNA --lang de

Each row is one argument (4 letters). Or use --letters:

python3 skills/boggle/scripts/solve.py --letters ELMUZBTSETVOCKNA --lang en

Options

Flag Description
--lang en/de Language (default: en; always run EN and DE separately)
--min N Minimum word length (default: 3)
--json JSON output with scores
--dict FILE Custom dictionary (repeatable)

Scoring (standard Boggle)

  • 3-4 letters: 1 pt
  • 5 letters: 2 pts
  • 6 letters: 3 pts
  • 7 letters: 5 pts
  • 8+ letters: 11 pts

How it works

  • Builds a trie from dictionary files (one-time, ~11s)
  • DFS traversal from every cell, pruned by trie prefixes
  • Adjacency: 8 neighbors (horizontal, vertical, diagonal)
  • Each cell used at most once per word
  • Qu tile support: Standard Boggle "Qu" tiles are handled as a single cell (e.g., QUENHARI... โ†’ "QU" occupies one position)
  • All matching is dictionary-only โ€” no generative/guessed words

Data

Dictionaries are auto-downloaded from GitHub on first run if missing.

  • data/words_english_boggle.txt โ€” 359K English words
  • data/words_german_boggle.txt โ€” 1.35M German words

Performance

  • Trie build: ~11s (first run, 1.7M words)
  • Solve: <5ms per board