2
Input
A single string, which contains no whitespace, as a command-line argument.
Output
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.
Examples
e1=Q => 5251
cxd8=B => 3743
axh8=R => no output (a-pawns cannot capture on h-file)
h8=N+ => 8784
Could we have some test cases? – Doorknob – 2016-03-15T02:56:45.500
@Doorknob Added. – EMBLEM – 2016-03-15T03:00:07.137
Can we exit with an error if the input is invalid? Does
#
for checkmate need to be supported? – Doorknob – 2016-03-15T03:02:15.627@Doorknob No, you must produce no output and exit without errors. # does need to be supported. – EMBLEM – 2016-03-15T03:03:08.340
Why the input restriction? – CalculatorFeline – 2017-06-21T03:23:48.243