Generator

The last row of the table: "measured" against 156 characters

Rendered here at the parameters it defaults to, with every essay that calls it — which is the same list as the blast radius of changing it.
The last row of the table: "measured" against 156 charactersCell (m, j) of a table whose top row is zero holds the cost of the best alignment of the whole pattern ending at position j of the text. So the curve is the text scored, position by position, and every local minimum is a place the pattern nearly occurs. The rule at k = 2 is the threshold: 9 positions are at or under it, and the best is 0 at position 150. Filled under every substitution costs 1, every gap character costs 1.048best: 0 at 150position in the textcost of the best match ending here, in editsdashed: the threshold k = 2 · unit cost9 positions under it

The last row of the table: "measured" against 156 characters

Cell (m, j) of a table whose top row is zero holds the cost of the best alignment of the whole pattern ending at position j of the text. So the curve is the text scored, position by position, and every local minimum is a place the pattern nearly occurs. The rule at k = 2 is the threshold: 9 positions are at or under it, and the best is 0 at position 150. Filled under every substitution costs 1, every gap character costs 1.

Drawn at 700 × 400, wide on the page. Everything above is what search-row returns with no arguments; the caption is the generator's own, computed from the numbers in the drawing rather than written beside it.

2 essays call search-row. The drawing above is what it returns with no arguments at all; every call below passes it something, because a placement that passes nothing draws whichever member of the family the generator happens to default to rather than the one its essay argues about — which is what optcheck and figfill exist to catch.

Where it is called

Changing this generator changes every one of these figures.

The library, page 4 of 5 — where search-row sits