A single string, which contains no whitespace, as a command-line argument.
If the string is not a valid algebraic notation pawn promotion, produce no output and exit. If the string is a valid pawn promotion, convert it to ICCF numeric notation and print the result, followed by a newline.
A valid algebraic notation pawn promotion consists of:
- A letter from a to h indicating the pawn's departure column (known as a "file" in chess);
- Optionally, "x" followed by the file of the pawn's arrival square if it has captured a piece in promoting;
- "1" or "8" depending on which side promoted; and
- "=" followed by one of "Q", "R", "B", "N" to indicate the chosen piece;
- Optionally, "+" to indicate the move was a check or "#" to indicate the move was a checkmate.
An valid ICCF numeric notation pawn promotion consists of:
- Two digits indicating the coordinates of the square from which the pawn departed (the files are numbered and not lettered as in algebraic notation);
- One digit indicating the file on which the pawn arrived, in case it has captured a piece while promoting (this does not officially comply with the standard, but I prefer keeping all moves as 4 digits for simplicity); and
- One digit to indicate the chosen piece: 1 for queen, 2 for rook, 3 for bishop, 4 for knight.
e1=Q => 5251 cxd8=B => 3743 axh8=R => no output (a-pawns cannot capture on h-file) h8=N+ => 8784