diff --git a/293.flip-game.js b/293.flip-game.js new file mode 100644 index 00000000..42357b18 --- /dev/null +++ b/293.flip-game.js @@ -0,0 +1,25 @@ +/* URL of this problem + * https://leetcode.com/problems/flip-game/description/ + * + * @param {string} currentState + * @return {string[]} + */ + +var generatePossibleNextMoves = function(currentState) { + const PossibleStates = []; + + for (let i = 0; i < currentState.length - 1; i++) { + const CurrentStateArr = [...currentState]; + + if (CurrentStateArr[i] === "+" && CurrentStateArr[i + 1] === "+") { + CurrentStateArr[i] = "-"; + CurrentStateArr[i + 1] = "-"; + + PossibleStates.push(CurrentStateArr.join("")); + } + } + + return PossibleStates; +}; + +module.exports = generatePossibleNextMoves; \ No newline at end of file diff --git a/generatePossibleNextMoves.test.js b/generatePossibleNextMoves.test.js new file mode 100644 index 00000000..ca0d0ce2 --- /dev/null +++ b/generatePossibleNextMoves.test.js @@ -0,0 +1,17 @@ +const generatePossibleNextMoves = require("./293.flip-game"); + +test("Return an array of all the possible states after one valid move", () => { + expect(generatePossibleNextMoves("++++")).toEqual(["--++","+--+","++--"]); +}); + +test("Return an empty array if the input currentState is made of only one of '+'", () => { + expect(generatePossibleNextMoves("+")).toEqual([]); +}); + +test("Return an empty array if the input currentState is an empty string", () => { + expect(generatePossibleNextMoves("")).toEqual([]); +}); + +test("Return an empty array if the input currentState comprises only '-", () => { + expect(generatePossibleNextMoves("----")).toEqual([]); +}); \ No newline at end of file