About the puzzles

How the daily cricket puzzles choose their answers

Why every puzzle is decided ninety days in advance, how the weekly difficulty curve works, and what happens when a puzzle turns out to be unfair.

7 min read 1,430 words

Everybody who plays a daily puzzle eventually asks the same question: is this random, and if not, who decides?

Here is the honest answer for WicketYaari, including the parts that are awkward.

Nothing is random at the moment you play

The answer for any given date is decided ninety days before that date, and written into a row in a database. When you open a puzzle, nothing is being chosen. It is being looked up.

This matters for one reason above all others: the puzzle has to be identical for everyone on earth. A shared result grid is only interesting if the person you paste it to played the same puzzle. If the answer were generated at request time, two servers, two caches or two clocks would eventually disagree, and the grid would quietly stop meaning anything.

Deciding in advance also means a bad puzzle can be pulled before anyone sees it, which brings us to the difficulty curve.

Five steps showing how a daily puzzle is generated ahead of time, from the cron job through to going live at midnight UTC
Nothing is generated while you play. The answer for a date was written to a row weeks earlier.

The week has a shape

Puzzles are not uniformly hard. Every player in our dataset carries a difficulty tier from 1 to 5:

  • 1 — known to anyone who has watched a highlights package
  • 3 — needs someone who follows that format
  • 5 — for the person in the group chat who will not stop talking about
  • 1990s Associate cricket

The Cricketer generator then draws against a weekly curve. Monday and Tuesday are gentle, Thursday through Saturday are the hard days, and Sunday comes back down.

DayTier
Monday1
Tuesday2
Wednesday2
Thursday3
Friday4
Saturday4
Sunday2

The curve exists because a puzzle that is always hard is a puzzle people stop starting, and one that is always easy is one they stop finishing. A week that has a shape gives you a day you will probably solve and a day you probably will not, which turns out to be the thing that makes people come back.

Two rules the generator will not break

No repeat inside 180 days. An answer that has already come up is excluded for half a year.

No two consecutive days that feel the same. If yesterday's answer was an Indian batter who debuted in the 1990s, today's will not be another one. The validator checks country, role and debut decade together and rerolls if all three match.

The rule it will break, and why

If the pool is genuinely exhausted, the generator repeats rather than producing nothing.

That is a deliberate choice and not a good one. It exists because a repeated answer is a worse day, while a day with no puzzle at all is a broken product. With the dataset we have today — 88 players and 6 matches — the three match-based games will repeat sooner than we would like, and there is no honest way to dress that up. The fix is more data, not cleverer code, and it is the main thing standing between this site and a proper launch.

When a puzzle turns out to be unfair

Once a puzzle has been played, we can see exactly how it went: how many people solved it, in how many guesses, and what everyone opened with.

The rule we watch is simple. A solve rate under 40 percent or over 95 percent is a badly tuned puzzle, not bad luck. Under 40 and the answer is too obscure for its slot in the week. Over 95 and the day was a free point.

Either way the correction is the same: the difficulty tier on that answer was wrong, so we change it, and every future puzzle drawing from that tier gets a little more accurate.

90
Days of puzzles decided in advanceNothing is chosen at the moment you play. It is looked up, so the puzzle is identical for everyone on earth

What the numbers are for

The distribution you see on the result screen — how many people solved it in one, two, three — is not decoration. It is the same data we use to find bad puzzles, shown to you because it is more interesting than hiding it.

The "63 percent opened with Kohli" style of statistic comes from the same place. Every guess is tallied, which is also how we notice when a supposedly hard answer is being found immediately by everyone, because the first guess people reach for happens to be correct.

Quick question

What happens to your streak if you miss a whole day?

Why the date is UTC and not yours

Every puzzle changes at midnight UTC, everywhere, at the same instant. For somebody in India that is 5:30 in the morning; in California it is late the previous afternoon.

The alternative — a local midnight for each visitor — sounds friendlier and breaks the only thing that makes a daily puzzle worth playing. If your puzzle 214 is a different puzzle from your friend's puzzle 214, the shared grid is meaningless, the conversation about today's answer is impossible, and the streak becomes a per-timezone fiction that changes when you travel.

One date, one answer, one number, for everybody. It is worth an awkward local changeover time.

What happens when a puzzle is wrong

Occasionally one will be. A player's data will have an error in it, or a puzzle that looked fair in generation turns out to have two defensible answers.

Because puzzles are rows written in advance rather than generated at page load, a bad one can be found and replaced before it goes live — which is the main practical reason for the whole design. A puzzle scheduled for three weeks from now can be swapped without anybody noticing.

If a bad puzzle does go live, the fix is to correct the underlying data and leave the puzzle number alone. Renumbering would break every share grid and every streak that referenced it, and the cost of that is much higher than the cost of one bad day.

There is one more reason, and it is about us rather than the site: a buffer that long means nobody is ever writing tomorrow's puzzle tonight. Deadline pressure is where bad puzzles come from, and the schedule removes it entirely.

What the buffer is actually protecting against

Ninety days is a long buffer for a site that could generate tomorrow's puzzle tonight, and the length is deliberate.

If the cron job stops running — a hosting change, an expired credential, a mistake in a deploy — the site keeps working for three months before anybody notices anything. That is enough time for a monitoring alert to be missed, ignored, and eventually acted on.

It also means a data import that goes wrong cannot take out tomorrow's puzzle. The rows already exist. The import affects what gets generated after the buffer runs out, which gives us weeks to notice rather than hours.

What we do not do

We do not adjust your puzzle based on how you have been playing. There is no personalisation, no easier day because you lost yesterday, no harder day because you are on a streak. Everyone gets the same puzzle, and a streak is worth having precisely because nothing is being softened for you.

There is also no money anywhere in this, so there is no version of the question where the difficulty is tuned to make you spend something. Read why there is no money in this if you want that spelled out properly.

The short version

Decided ninety days ahead, tiered 1 to 5, drawn against a weekly curve, never repeated inside six months, never two similar days running, and corrected whenever the solve rate says we got it wrong.

Today's six are on the front page.

puzzles how it works difficulty design
Now go and use it Six cricket puzzles a day, free, no account. Today's are already up. Play today's six