Back to Freecodecamp

Challenge 173: Valid Pawn Moves

curriculum/challenges/english/blocks/daily-coding-challenges-javascript/69738771fb5a7b8b24cca29f.md

latest2.1 KB
Original Source

--description--

Given the position of one of your pawns on a chessboard, return an array of all the valid squares it can move to in ascending order.

A standard chessboard is 8x8, with columns labeled A through H (left to right) and rows labeled 1 through 8 (bottom to top). It looks like this:

A8B8C8D8E8F8G8H8
A7B7C7D7E7F7G7H7
A6B6C6D6E6F6G6H6
A5B5C5D5E5F5G5H5
A4B4C4D4E4F4G4H4
A3B3C3D3E3F3G3H3
A2B2C2D2E2F2G2H2
A1B1C1D1E1F1G1H1

For this challenge:

  • You are the player on the bottom of the board.
  • Pawns can only move one square "up".
  • Unless the pawn is in the starting row (row 2), then it can move one or two squares up.

For example, given "D4", return ["D5"], the only square your pawn can move to. Given "B2", return ["B3", "B4"], because it's on the starting row and needs to be in ascending order.

--hints--

findPawnMoves("D4") should return ["D5"].

js
assert.deepEqual(findPawnMoves("D4"), ["D5"]);

findPawnMoves("B2") should return ["B3", "B4"].

js
assert.deepEqual(findPawnMoves("B2"), ["B3", "B4"]);

findPawnMoves("A7") should return ["A8"].

js
assert.deepEqual(findPawnMoves("A7"), ["A8"]);

findPawnMoves("G2") should return ["G3", "G4"].

js
assert.deepEqual(findPawnMoves("G2"), ["G3", "G4"]);

findPawnMoves("E3") should return ["E4"].

js
assert.deepEqual(findPawnMoves("E3"), ["E4"]);

--seed--

--seed-contents--

js
function findPawnMoves(position) {

  return position;
}

--solutions--

js
function findPawnMoves(position) {
  const column = position[0].toUpperCase();
  const row = parseInt(position[1]);
  const moves = [];

  if (row >= 8) return moves;

  moves.push(`${column}${row + 1}`);

  if (row === 2) moves.push(`${column}${row + 2}`);

  return moves;
}