About Steno-Chess and StenoSolver
Steno-Chess was initially developed by Éric Angelini and introduced by him in 2005 on the website
chessvariants.com.
The concept behind Steno-Chess is that each move made in a chess game is represented by a single
character in a string.
The challenge is to determine the one and only sequence of chess moves that a string describes.
Classic Steno-Chess allows for the following characters:
~ — indicates that the move could be any legal move at all
a b c d e f g and h — indicate that
the moving piece ended its move on this file
1 2 3 4 5 6 7 and 8 — indicate that
the moving piece ended its move on this rank
K Q R N L and P - indicate that the
moving piece was a King, Queen, etc.
(notice that L is used for bishop moves)
q r l and n — indicates that the move was
a pawn promotion to the specified piece
x — indicates that the move was a capture
% — indicates that the move was an en passant capture
o — indicates that the move was an short (king-side) castling move
O — indicates that the move was an long (queen-side) castling move
+ — indicates that the move delivered check
= — indicates that the move resulted in stalemate
# — indicates that the move delivered checkmate
Castling is considered to be a king's move, so only K (not R)
and the King's starting and finishing rank or file can be used to represent a castling move.
(That is, any of K, g, and 8
could represent a Black king-side castle, but R and f cannot.)
Extended Steno-Chess was developed by Manus Hand (with the exception of
–, which existed in earlier extensions).
It allows for all of the marks in Classic Steno-Chess (listed above) and also
the following:
– — indicates that the move was not a capture
/ \ | and _ — indicate that piece moved
straight in the specified direction
^ v < and > — indicate that the piece
moved closer to the pointed-to edge of the board
" indicates that the moving piece began its move on the square where
the player's previous move ended
p — indicates that the move was a pawn promotion (to an unspecified
piece-type)
0 — indicates that the move was an castling move (to an unspecified
side)
B — indicates (in addition to L) a bishop move
The " mark can indicate only the movement of the king
(not the rook) on the move immediately after castling.
(That is, O." and O.K are equivalent.)
PGN Steno-Chess was also developed by Manus Hand (the developer of the StenoSolver).
Essentially, in the PGN steno-vocabulary, if a character appears in the
PGN (Portable Game Notation) for a chess-move, then it can validly represent that move.
. and ~ — indicate that the move could be
any legal move at all
a b c d e f g and h — indicate that the
moving piece ended its move on this file
or that the letter was needed to disambiguate the move (e.g., the
g in the move Nge2)
1 2 3 4 5 6 7 and 8 — indicate that the
moving piece ended its move on this rank
or that the digit was needed to disambiguate the move
(e.g., the 2 in the move R2a7)
K Q R N and B - indicate that the moving
piece was a King, Queen, etc.
or that a pawn was promoted to that type of piece (except
K, of course)
— note that there is no P for pawn —
= — indicates that the move was a pawn promotion (to an unspecified
piece-type)
O and – — indicate that the move was a
castling move (to an unspecified side)
x + # — have their usual meaning (capture, check, and checkmate)
/ — indicates that the move resulted in a draw (which PGN annotates with
½-½)
The draw may be due to either stalemate or insufficient material.
Draws by repetition or by the 75-move rule are not recognized.
Notice that in PGN Steno-Chess, a castling move can only be represented by
O or –
(that is, K, R, and the rank
and files involved will not represent a castling move).
While creating a puzzle, it is often useful to specify multiple requirements for a move, and then go back later to whittle away these requirements to come up with the final version of a puzzle. For example, rather than knowing right at the beginning of your work that the mark e is sufficient to describe a move that needs to be made, you can specify any or all of the other marks that identify the move while you continue your work on the puzzle.
This is done by using ampersands to separate the multiple marks to be applied to the same move. For example, 1&P&a&x&n could be used to ensure that the solver must make the move bxa1=N on a specific turn for Black. Later during your work, you would of course come back and remove all of the ampersand-joined marks (except one) if possible to do so and still force a unique solution.
It is often also useful, during puzzle creation and solution, to specify a mark that you are sure must not hold true about a particular chess move. This is done by using an exclamation point to introduce any such mark. For example, a!3 as the first move of a game will uniquely match only the pawn advance to the a4 square. Similarly, the game-beginning steno a!P will only match the move Na3.
Multiple "forbidden" (also called "and not") marks can be specified for any steno mark. The steno ~!Q!x!6 specifies that the move may be anything other than a queen move, a capture (by any piece), or any move that ends on the 6th rank.
Forbidden marks can be combined with ampersands. The steno x&g!R specifies a move that is a capture on the g-file that is not made by a rook.
Any text that is between a matching set of parentheses, such as (keep WQ in place) is ignored by the solver. This is helpful when deciding on the marks to choose for your final steno. For example, R(Rxh3)would check to see if just the R is sufficient to reach a unique solution, without you needing to remove and potentially forget the other characters that you could choose to represent the move.
It is often time-consuming to wait for the solver to get to a certain point in a solve, only for you to have to re-start the solve after changing something in the steno after that point. To help with this, you can instruct the solver to "save its work" after any particular mark, and then tell it to start at that point in later runs.
This is done by using the dollar-sign. When the solver reaches a $ during a solve, it will save its work at that point. If $ is given at the very beginning of a steno, then the solver will begin from the saved checkpoint. For example:
will cause the solver to save its place at the point when the $ is reached. Then, if you have decided to see if the mark that follows the save-point would work better as a 6, your next steno for the solver could be:
and all of the time that would have been taken by the solver to re-process all of the marks a24N557Qhg would be saved.
You can also specify conditions that the solver will check after a move is made, and reject any position that does not satisfy those conditions. This is useful when you, as a human solver, recognize something that is enforced by the existence of certain marks given later in a steno.
This is done by adding one or more condition-sets, enclosed in square brackets, after the mark. When more than one condition-set is given, all must hold true. The recognized conditions (which are specified and understood the same way when using any of the three vocabularies) are exemplified and described below:
- [xB] mandates that a bishop was captured on the move that just was made; only one piece type may be specified after an x. Since the color of any piece captured on the turn is known, the piece-type may be given either as upper- or lower-case. However, in all other conditions described below, upper-case letters are used to indicate White pieces, and lower-case to indicate Black pieces.
- [XnBp] mandates that every listed piece (in this example, a Black knight, a White bishop, and a black pawn) must have been captured by this point in the game.
- [=rR] mandates that every listed piece (in this example, a rook of each color) has been created by promotion by this point in the game. The list of pieces may be omitted (that is, simply [=] is allowed), to mean only that at least one player must have made at least one promotion.
- [^5] mandates that at least one White pawn must be on or above the fifth rank.
- [v3] mandates that at least one Black pawn must be on or below the third rank.
- [–f6] mandates that the f6 square must be vacant. Note that you may omit the rank or the file, to indicate a completely empty rank or file (for example, [–2] is allowed).
- [qb4] mandates that a Black queen must be on the b4 square. Again, you may omit the rank or the file, to indicate that a specific piece-type must be somewhere on that rank or file (for example, [Kh] is allowed to mean the White king must be somewhere on the h-file).
- [@g3] mandates that the piece that moved must have begun the turn on the g3 square. Again, you may omit the rank or the file, to indicate only the rank or file from which the move began (for example, [@d] is allowed).
Note that within conditions, the letters L (and the lower-case letter l) and D (and d) can be used, to represent the light-square and dark-square bishops.
Within a square-bracketed condition set, you may separate multiple conditions using a vertical bar (|), meaning "or". In this case, if either or any one of the conditions separated by the vertical bar holds true, the solver will accept the entire square-bracketed condition as holding true. Note that ampersands are considered before vertical bars. For example, [=r|=q] mandates that Black must have promoted either to a Rook or to a Queen (or both) by this point in the game. Similarly, [ka3|ka2&Pb2|kb3] mandates that the Black king must be on one of three specific squares, but if is on a2, then a White pawn must be also on the b2 square.
To eliminate solve-paths that are doomed to fail, and thus reduce the time it takes to solve a puzzle, the StenoSolver applies the following logic automatically:
-
If a castling mark is in the steno:
- the castling player cannot make a castling move before that mark is reached
- the castling player must not be in check, so !+ is added to the opposing player's previous move
- the castling player's king and rook must not move before that mark is reached (for example, [Rh1] is added to all moves prior to a White king-side castle, and !K to all prior moves by White)
- the squares between the castling player's king and rook must be empty when the mark is reached (for example, [–f1&–g1] is added after the single move that precedes to a White king-side castle)
- the squares between the castling player's king and rook must be empty a full-turn before the mark is reached, except that if the castling is to the queen's side, the queen's knight's square may be occupied by an opposing Knight or Bishop (for example, [–c1&–d1][–b1|nb1|bb1] is added after the White player's move that immediately precedes his queen-side castle)
- if the castling move appears on the player's fourth turn, it is known to be king's side castling.
-
If a promotion mark is in the steno:
- the promoting player must have a pawn advanced sufficiently on the preceding moves, or a promotion must have taken place before the mark is reached (for example, [v3|=q] is added to both player's moves that immediately precede a Black promotion to a queen, and [v4|=q] to the two before that, etc.)
- If a move captures the opponent's only queen, rook, bishop, or knight, and if a move of such a piece is specified later in the steno, then a promotion is forecast to take place on or before that move, and the pawn advance logic described above is applied.
- Marks that forbid the game to end (such as !#) are added to all steno marks prior to the final move in the steno.