The Verification Venue · a guarantee you can watch land

Fifty Shots to a Guaranteed Hit

Everyone treats Battleship as a guessing game. It is not, entirely: fire only the dark squares and every ship on the board must announce itself within fifty shots, whatever your opponent does with the fleet. The reason is parity, and you can watch it land.

You cannot control where the ships hide. You can control which half of the board you ask. Below is a real ten by ten board: place a fleet by hand or randomise one, choose your colour, and run a hunter that fires only the fifty squares of one checkerboard colour and nothing else. Watch the shot counter. Then keep going, because the second instrument below measures exactly where parity stops being enough.

Choose a fleet, or draw your own below

"Forced at N" is computed live from each fleet's colour arithmetic (the working is in the calc line below the board). It counts same-colour shots that leave the fleet no legal hiding place; it says nothing about how fast you win. Every fleet here has a shortest ship of two squares: a one-square ship would break the guarantee outright, and the calc line shows it going to infinity. ↓

the hunter never fires the pale squareshunting dark squares →

Shots fired

0 of 50

every shot lands on a dark square

Ships contacted

0 of 0

randomise or place a fleet to begin

Build the fleet

Tap a length, then tap a water square to drop the ship with its bow there. Tap a ship to pick it back up. Ships may touch, as in the standard rules; nothing here depends on them keeping apart.

Hunt

The hunter fires one colour class in scan order and nothing else. Fifty shots is the guarantee for any fleet whose shortest ship is two squares long. Switching colour or editing the fleet resets the board.

The mechanism, in one breath: colour the board like a chessboard. Orthogonal neighbours always differ in colour, and every ship is a straight run of neighbouring squares, so a ship of length L covers ⌈L/2⌉ squares of one colour and ⌊L/2⌋ of the other, never zero of either. A whole fleet therefore needs at least R = Σ ⌊L/2⌋ squares of each colour, seven apiece for the standard fleet. Fire one colour class until fewer than R of its squares remain and the fleet has nowhere legal to sit: some ship would be missing a colour it cannot do without. For the standard fleet that happens after forty-four shots, six short of the famous fifty. Fifty remains the number to quote, because it is exactly tight in the only sense that deserves the word: against a lone destroyer, forty-nine shots always leave a whole domino untouched (the domino certificate in the check panel below), and a destroyer parked in that domino survives. Even a hunter that adapts to every miss cannot beat fifty against that fleet.

place a fleet to see its colour arithmetic

You just watched a hunter ignore half the board and touch every ship anyway, every time, because the geometry leaves the fleet no choice. Keep two limits in view, stated here rather than buried: this guarantees first contact, not sinks and not a quick win (the next instrument measures what parity leaves on the table), and it evaporates if a one-square ship joins the fleet, since a single square hides on any unfired square and only the hundredth shot finds it.

Where parity stops being enough: hunt versus finish

Parity is a finder, not a finisher. The moment a shot connects, more parity shots are waste: the wounded ship sticks out into the colour you were ignoring. Below, two policies play the same randomly placed fleets, square for square. Policy P fires all fifty parity squares, then finishes every wound by probing orthogonal neighbours. Policy H drops everything on a hit, finishes that ship, then resumes the scan. Both see only what a real player would see, both get the same sunk-ship revelation, and both face identical boards, so the difference is the policy and nothing else. Fix the seed, run it, and read the gap yourself.

Pure parity (P)

not run

mean ± standard error

Hybrid (H)

not run

mean ± standard error

Difference (H − P)

not run

paired, same boards

both policies sink the whole standard fleet; fewer shots is better

pure parity hybrid total shots to sink the fleet

The check: every number recomputed in front of you

Everything in this panel is recomputed in your browser from the same arithmetic the board uses. The table enumerates every legal placement of every ship length and tests the both-colours property placement by placement. The closed-form column is the hand derivation, twenty times eleven minus L, and the agreement column only says agree when the two actually match. Nothing here is decorated; a disagree would print in orange.

length Lplacements found20·(11−L)agreetouch both coloursmin darkmin light

The lines below are complete depth-first sweeps over all legal combinations of ship placements against the stated shot sets. A sweep that visits every branch and finds no survivor is a proof, not a statistic, and the trial counts say how big each sweep was. The forty-three-shot dodge set is the dark squares minus seven named squares; the page does not claim forty-three always fails, only that this set can be dodged, which is what makes forty-four sharp for uniform-colour firing.

Live summary of the three headline searches:

computing searches…

Exact on this page: the enumeration table, the searches, the domino certificate, and every count in the readouts. Modelled: the Monte Carlo means and standard errors above, which are outputs of the two policies as defined, with the seed and game count shown beside them. Run it yourself: node research/fifty-shots-to-a-guaranteed-hit/verify-fifty-shots-to-a-guaranteed-hit.mjs, which re-derives every number on this panel from a separate engine, prints its check count, and supports --mutate.

What's exactly true, what's modelled, and what's assumed

Exactly true. Every placement count in the table is an exhaustive enumeration, cross-checked against the closed form twenty times eleven minus L. The both-colours property is verified placement by placement, all six hundred of them. The no-survivor results are complete depth-first searches over every legal combination of ship placements; the trial counts are printed. The fifty bound itself rests on a certificate you can audit above: the board is tiled into fifty dominoes, each an adjacent pair, covering all hundred squares exactly once; any set of squares with no two adjacent holds at most one square per domino, so at most fifty squares; so any forty-nine shots leave fifty-one open squares, some whole domino among them, and a destroyer sitting there survives. That chain uses no probabilities, and it is why no strategy, even one adapting to every miss, can promise contact with every possible fleet in under fifty.

Idealised. The Monte Carlo policies see only hit, miss and sink announcements, with one mercy granted identically to both: when a ship sinks, its exact cells are revealed, which a real player can usually infer but not always when ships touch. The finisher probes the lowest-numbered unfired orthogonal neighbour of any unresolved hit, a deliberately simple deterministic rule; cleverer finishers exist and would move both means. Fleets are placed uniformly over all legal placements by rejection sampling. The comparison uses common random numbers: both policies face the same fleet, shot for shot, so the paired difference isolates the policy.

Representative, not universal. Standard errors shrink as one over the square root of the game count; doubling the games roughly halves them. The means are modelled outputs of these two policies under these rules, not measurements of human play and not properties of Battleship at large. Other fleets, other finishers and other scan orders give other numbers; the seed box lets you check the gap is stable, not that it is universal. Rules vary by edition on whether ships may touch: this page allows touching, and forbidding it would only shrink the hiding space, so every guarantee here still holds.