Last week this happened:

For those curious, the methodology is detailed further in this post. The short procedure:

- Define rare: With some wrinkles, based on my preference to see a word with a clean edge, as in decaf99rather thandecafea(more on this below)., repeated characters, repeated sequences of characters, palindromes, and ascending and descending sequences.

- Pattern match: combine possible paths to the pattern(s), divide over 16⁷ possible hashes. That yields our drop rate, assignable to a I drew the tier thresholds mostly by vibe, but I wanted to see an order of magnitude between tiers..

- Seek fortune.

Below you'll find a detailed (and configurable!) breakdown of how the scorer matches patterns. I can't vouch for every permutation of the configuration, but I can vouch for the one I like!

Everything below is computed in the browser:

- Scoring a hash: each run of 3 to 7 characters is checked against every pattern, and patterns that don't overlap stack. The probability is the rarest stack's matching hashes ÷ 16⁷.

- Saving new rules: a Web Worker recounts all 16⁷ hashes, marking each stack's matches in a 2²⁸-bit table. That gives the tier sizes and the map's data.

- Moving a tier threshold: no recount; the counted stacks are regrouped into the new tiers.

- The map: saved rules also compile to a GLSL shader, which calculates the scores of the hashes in view on the GPU.